本文介绍如何修改 PHP + PDO 查询语句,使单个搜索框能同时匹配数据库中歌曲的标题(title)和编号(number)字段,通过 OR 条件与参数化绑定安全实现双条件模糊检索。
本文介绍如何修改 php + pdo 查询语句,使单个搜索框能同时匹配数据库中歌曲的标题(title)和编号(number)字段,通过 `or` 条件与参数化绑定安全实现双条件模糊检索。
要让一个 SQL 查询同时支持按“歌曲名”或“歌曲编号”进行模糊搜索,核心在于使用 OR 逻辑连接两个 LIKE 条件,并确保 PHP 中正确绑定两个命名参数。原始代码仅查询 number 字段,需扩展为覆盖 title 和 number 两字段,且必须避免拼接用户输入导致 SQL 注入。
以下是优化后的完整 PHP 示例(含安全处理与结构化输出):
<?phprequire_once '../config.php';if (isset($_POST['query']) && !empty(trim($_POST['query']))) { $inpText = trim($_POST['query']); // ✅ 使用 OR 连接两个 LIKE 条件,支持 title 或 number 匹配 $sql = "SELECT id, title, number, chord FROM Song WHERE title LIKE :keyword OR number LIKE :keyword"; $stmt = $conn->prepare($sql); $stmt->execute(['keyword' => '%' . $inpText . '%']); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); echo '<table border="1" class="search-result">'; if ($result) { foreach ($result as $row) { echo "<tr>"; echo "<td><a href='page/details.php?id={$row['id']}'>{$row['title']}</a></td>"; echo "<td>{$row['number']}</td>"; echo "<td>{$row['chord']}</td>"; echo "</tr>"; } } else { echo "<tr><td colspan='3' style='text-align:center;'>未找到匹配的歌曲</td></tr>"; } echo '</table>';} else { echo '<p style="color:#666;">请输入关键词进行搜索。</p>';}?>
关键改进说明:
该方案简洁、安全、可维护,是 PHP+MySQL 模糊多字段搜索的标准实践。
立即学习“PHP免费学习笔记(深入)”;
BoxAgnts 工具系统(4)——Tool Trait 和并发上下文模型
老板:“你是怎么使用 AI 的:真能做到不手写代码?为什么 Codex 在我手里感觉是个智障。。”我:“这样:然后再这样。。”老板直接跪了。
Agent 系统的启动流程:自配置到运行时
SpaceMind - 科大讯飞打造的智能空间Agent与场景自动化平台
AI工程师的第一课 - Python
AI Skills 工程化:当每个开发者都有一支AI小队,你该怎么管理?