当前位置:首页 > 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 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>';
}
?>

性能优化

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

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();

php实现音乐搜索功能

分享给朋友:

相关文章

vue实现音乐评论

vue实现音乐评论

Vue 实现音乐评论功能 音乐评论功能通常包括评论列表展示、发表评论、回复评论等模块。以下是基于 Vue 的实现方案。 数据结构设计 评论数据通常采用嵌套结构,包含主评论和子评论(回复): com…

vue 实现搜索功能

vue 实现搜索功能

实现搜索功能的基本思路 在Vue中实现搜索功能通常涉及以下几个核心步骤:监听用户输入、过滤数据列表、动态更新视图。以下是具体实现方法。 监听用户输入 使用v-model双向绑定搜索框的输入值,实时获…

vue实现音乐页面

vue实现音乐页面

使用 Vue 实现音乐页面 项目初始化 使用 Vue CLI 或 Vite 创建一个新的 Vue 项目。确保安装了必要的依赖,如 vue-router 和 axios。 npm create vue…

vue实现音乐跳转

vue实现音乐跳转

使用 Vue 实现音乐跳转功能 在 Vue 中实现音乐跳转功能,通常需要结合 HTML5 的 <audio> 元素和 Vue 的数据绑定及事件处理机制。以下是实现音乐跳转的几种常见方法。…

vue实现搜索功能

vue实现搜索功能

实现搜索功能的基本思路 在Vue中实现搜索功能通常需要结合数据绑定、事件监听和过滤逻辑。可以通过计算属性或方法对数据进行实时筛选。 使用计算属性实现搜索 通过v-model绑定搜索输入框,利用计算属…

vue实现音乐上传

vue实现音乐上传

Vue 实现音乐上传功能 音乐上传功能通常涉及前端界面交互、文件选择、上传进度显示以及后端接口对接。以下是基于 Vue 的实现方法: 前端界面设计 使用 Vue 的模板语法创建一个简单的上传界面,…