php实现音乐搜索功能
数据库设计
创建数据库表存储音乐信息,至少包含字段:id、title、artist、album、file_path。MySQL示例:
CREATE TABLE music (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255),
artist VARCHAR(255),
album VARCHAR(255),
file_path VARCHAR(255)
);
搜索表单
HTML前端创建搜索表单,提交到PHP处理页面:
<form action="search.php" method="get">
<input type="text" name="keyword" placeholder="输入歌曲名或歌手">
<button type="submit">搜索</button>
</form>
PHP搜索处理
使用PDO连接数据库并执行搜索,防止SQL注入:
<?php
$keyword = $_GET['keyword'] ?? '';
if (!empty($keyword)) {
try {
$pdo = new PDO('mysql:host=localhost;dbname=music_db', 'username', 'password');
$stmt = $pdo->prepare("SELECT * FROM music WHERE title LIKE :keyword OR artist LIKE :keyword");
$stmt->execute([':keyword' => "%$keyword%"]);
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
die("数据库连接失败: " . $e->getMessage());
}
}
?>
结果展示
循环输出搜索结果并包含播放链接:
<?php if (!empty($results)): ?>
<ul>
<?php foreach ($results as $song): ?>
<li>
<h3><?= htmlspecialchars($song['title']) ?></h3>
<p>歌手: <?= htmlspecialchars($song['artist']) ?></p>
<audio controls src="<?= htmlspecialchars($song['file_path']) ?>"></audio>
</li>
<?php endforeach; ?>
</ul>
<?php else: ?>
<p>没有找到匹配的歌曲</p>
<?php endif; ?>
高级搜索优化
添加模糊搜索和分页功能:
// 分页处理
$page = $_GET['page'] ?? 1;
$limit = 10;
$offset = ($page - 1) * $limit;
$stmt = $pdo->prepare("SELECT * FROM music
WHERE title LIKE :keyword
OR artist LIKE :keyword
LIMIT $limit OFFSET $offset");
性能优化建议
- 为
title和artist字段添加全文索引 - 使用缓存技术存储热门搜索结果
- 实现异步AJAX搜索减少页面刷新







