当前位置:首页 > PHP

php实现音乐搜索功能

2026-01-29 04:15:55PHP

数据库设计

音乐搜索功能需要存储歌曲的基本信息,例如歌曲名称、歌手、专辑、时长等。创建一个MySQL数据库表来存储这些信息。

CREATE TABLE songs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    artist VARCHAR(255) NOT NULL,
    album VARCHAR(255),
    duration INT,
    file_path VARCHAR(255) NOT NULL
);

搜索表单

创建一个简单的HTML表单,允许用户输入搜索关键词。表单提交到PHP处理脚本。

<form action="search.php" method="GET">
    <input type="text" name="query" placeholder="搜索歌曲或歌手">
    <button type="submit">搜索</button>
</form>

搜索处理

在PHP中处理搜索请求,连接数据库并执行查询。使用LIKE操作符进行模糊匹配。

<?php
// 连接数据库
$db = new PDO('mysql:host=localhost;dbname=music_db', 'username', 'password');

// 获取搜索词
$query = isset($_GET['query']) ? trim($_GET['query']) : '';

if (!empty($query)) {
    // 准备SQL查询
    $stmt = $db->prepare("SELECT * FROM songs WHERE title LIKE :query OR artist LIKE :query");
    $stmt->bindValue(':query', '%' . $query . '%');
    $stmt->execute();

    // 获取结果
    $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
?>

显示结果

将搜索结果以列表形式展示,包括歌曲名称、歌手和播放链接。

php实现音乐搜索功能

<?php if (!empty($results)): ?>
    <h3>搜索结果</h3>
    <ul>
        <?php foreach ($results as $song): ?>
            <li>
                <strong><?php echo htmlspecialchars($song['title']); ?></strong>
                - <?php echo htmlspecialchars($song['artist']); ?>
                <a href="play.php?id=<?php echo $song['id']; ?>">播放</a>
            </li>
        <?php endforeach; ?>
    </ul>
<?php else: ?>
    <p>没有找到匹配的歌曲。</p>
<?php endif; ?>

播放功能

创建一个简单的播放页面,根据歌曲ID从数据库获取文件路径并播放。

<?php
// 连接数据库
$db = new PDO('mysql:host=localhost;dbname=music_db', 'username', 'password');

// 获取歌曲ID
$id = isset($_GET['id']) ? intval($_GET['id']) : 0;

// 查询歌曲信息
$stmt = $db->prepare("SELECT * FROM songs WHERE id = :id");
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$stmt->execute();
$song = $stmt->fetch(PDO::FETCH_ASSOC);

if ($song) {
    // 输出播放器
    echo '<h3>' . htmlspecialchars($song['title']) . '</h3>';
    echo '<p>歌手: ' . htmlspecialchars($song['artist']) . '</p>';
    echo '<audio controls>';
    echo '<source src="' . htmlspecialchars($song['file_path']) . '" type="audio/mpeg">';
    echo '您的浏览器不支持音频元素。';
    echo '</audio>';
} else {
    echo '<p>歌曲不存在。</p>';
}
?>

性能优化

对于大型音乐库,考虑添加全文索引以提高搜索效率。

php实现音乐搜索功能

ALTER TABLE songs ADD FULLTEXT(title, artist);

修改搜索查询以使用全文索引。

$stmt = $db->prepare("SELECT * FROM songs WHERE MATCH(title, artist) AGAINST(:query IN BOOLEAN MODE)");
$stmt->bindValue(':query', $query);
$stmt->execute();

安全考虑

确保所有用户输入都经过验证和转义,防止SQL注入和XSS攻击。使用预处理语句和htmlspecialchars函数。

$query = isset($_GET['query']) ? trim($_GET['query']) : '';
$query = filter_var($query, FILTER_SANITIZE_STRING);

分页功能

对于大量搜索结果,实现分页功能以提高用户体验。

$page = isset($_GET['page']) ? intval($_GET['page']) : 1;
$limit = 10;
$offset = ($page - 1) * $limit;

$stmt = $db->prepare("SELECT * FROM songs WHERE MATCH(title, artist) AGAINST(:query) LIMIT :limit OFFSET :offset");
$stmt->bindValue(':query', $query);
$stmt->bindValue(':limit', $limit, PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();

分享给朋友:

相关文章

vue实现音乐

vue实现音乐

Vue 实现音乐播放器 在 Vue 中实现音乐播放器可以通过 HTML5 的 <audio> 元素或第三方库如 howler.js 来实现。以下是几种常见的实现方法: 使用 HTML5…

php搜索功能实现

php搜索功能实现

实现基本的PHP搜索功能 使用MySQL数据库和PHP实现简单的关键词搜索功能。需要确保数据库中有可供搜索的表和数据。 // 连接数据库 $conn = new mysqli('localhost'…

vue 搜索功能实现

vue 搜索功能实现

实现 Vue 搜索功能的基本步骤 在 Vue 中实现搜索功能通常需要结合数据绑定、计算属性和方法。以下是几种常见的实现方式: 基于计算属性的搜索 <template> <div…

vue实现模糊搜索功能

vue实现模糊搜索功能

实现模糊搜索的基本思路 在Vue中实现模糊搜索功能通常需要结合输入框的事件监听、数据过滤以及实时展示。核心是利用JavaScript的字符串方法或正则表达式对数据进行匹配筛选。 使用计算属性实现模糊…

vue文档搜索功能实现

vue文档搜索功能实现

Vue 文档搜索功能实现 在Vue项目中实现文档搜索功能,可以通过以下几种方式完成: 客户端搜索实现 使用computed属性或第三方库实现前端搜索: <template>…