首页 > 编程语言 >PHP SQL查询:按歌曲名或编号模糊搜索

PHP SQL查询:按歌曲名或编号模糊搜索

来源:互联网 2026-06-24 08:02:07

本文介绍如何修改 PHP + PDO 查询语句,使单个搜索框能同时匹配数据库中歌曲的标题(title)和编号(number)字段,通过 OR 条件与参数化绑定安全实现双条件模糊检索。 一个搜索框,同时要能按“歌曲名”或“歌曲编号”模糊查询,听起来有点小复杂?其实核心就一句话:在 SQL 里用 OR

本文介绍如何修改 PHP + PDO 查询语句,使单个搜索框能同时匹配数据库中歌曲的标题(title)和编号(number)字段,通过 OR 条件与参数化绑定安全实现双条件模糊检索。

一个搜索框,同时要能按“歌曲名”或“歌曲编号”模糊查询,听起来有点小复杂?其实核心就一句话:在 SQL 里用 OR 把两个 LIKE 条件连起来,然后 PHP 这边把参数绑对,别让用户输入直接拼进字符串就行。原来的代码只查了 number 字段,现在要扩展到 title 和 number 两个字段,最关键的是避免 SQL 注入——这个坑可不能踩。

下面是一份完整且经过优化的 PHP 示例,安全处理、结构化输出都一并安排了:

长期稳定更新的攒劲资源: >>>点此立即查看<<<

prepare($sql);
    $stmt->execute(['keyword' => '%' . $inpText . '%']);
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);

    echo '';
    if ($result) {
        foreach ($result as $row) {
            echo "";
            echo "";
            echo "";
            echo "";
            echo "";
        }
    } else {
        echo "";
    }
    echo '
{$row['title']}{$row['number']}{$row['chord']}
未找到匹配的歌曲
'; } else { echo '

请输入关键词进行搜索。

'; } ?>

几个关键改进,值得细品

  • 参数复用,省心省力:只用一个占位符 :keyword 同时匹配 title 和 number,绑定逻辑瞬间简化。有人可能会想用两个不同参数(比如 :number 和 :title),但在单输入场景下它们值是一样的,何必多此一举?
  • 输入校验不能省:加上了 trim()!empty() 判断,防止用户不小心点个回车就触发全表扫描——空搜索真没必要跑 SQL。
  • PDO 安全绑定是底线:始终通过 execute() 传入参数,绝不拼接用户输入,SQL 注入想钻空子?没门。
  • 健壮性多了一步:空结果时给出友好提示,表格加了 colspan 保证美观,基础样式也顺手建议了。
  • 需要留意的两点
    • 如果后续要支持“仅按标题”或“仅按编号”的高级筛选,可以加个下拉选择框(比如