当前位置:首页 > 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 CLI 或 Vite 创建一个新的 Vue 项目。确保安装了必要的依赖,如 vue-router 和 axios。 npm create vue…

vue 搜索功能实现

vue 搜索功能实现

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

网易云音乐vue实现

网易云音乐vue实现

实现网易云音乐Vue项目的基本步骤 项目初始化与依赖安装 使用Vue CLI创建项目框架,安装必要依赖如vue-router、axios、vuex等。网易云音乐API可使用开源项目NeteaseClo…

vue实现input搜索功能

vue实现input搜索功能

实现基础搜索功能 在Vue中实现input搜索功能可以通过v-model绑定输入值,结合计算属性或方法过滤数据。以下是一个基础实现示例: <template> <div>…

vue实现音乐上下曲

vue实现音乐上下曲

Vue 实现音乐上下曲功能 音乐播放器基础结构 在 Vue 中实现音乐上下曲功能,首先需要构建一个基本的音乐播放器组件。这个组件包含音频播放器、播放控制按钮以及播放列表。 <template&…

css制作音乐

css制作音乐

CSS 制作音乐的基础方法 CSS 本身无法直接生成音频,但可以通过配合 HTML 和 JavaScript 实现音乐播放器界面或音频可视化效果。以下是几种常见实现方式: 音频播放器界面 通过 CS…