php - 使用 "%"从 SQL 查询中得到奇怪的结果

标签 php sql database

我尝试使用 SQL 从我的数据库中获取结果,但我的结果与我用作输入的结果不一致。我总是从那些既包含整数又包含字符的结果中得到结果。例如,如果我搜索“liu”,我会得到“2LK020”的结果。我既不能用整数搜索也不能得到正确的结果……我使用:

    $result = queryDatabase(
    "SELECT course_tag, course_name FROM course WHERE course_tag OR course_name LIKE ?",
    array(1 => '%' .$parameters[0]. '%')

使用“%”有问题吗?或者为什么我会得到这些奇怪的答案?

最佳答案

阅读:http://dev.mysql.com/doc/refman/5.7/en/operator-precedence.html

你所做的相当于

WHERE course_tag OR (course_name LIKE ?)

这是

WHERE true/false OR true/false

只要 course_tag 不是空字符串或 null 或其他“假”值,它几乎总是计算为 true 值,并且使整个 WHERE 子句的计算结果为 true

您不能针对单个 LIKE 值测试多个字段。那根本行不通。您需要单独测试每一个:

WHERE (course_tag LIKE ?) OR (course_name LIKE ?)

但是,由于您正在执行 %...% 双通配符搜索,您可以使用

进行一些优化
WHERE CONCAT(course_tag, course_name) LIKE ?

关于php - 使用 "%"从 SQL 查询中得到奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34025604/

相关文章:

javascript - 根据下拉选择自动填充文本框(Laravel 和 Javascript 帮助!)

mysql - 如何计算 SQL 中的平均日期?

sql - Oracle中如何查看索引是否被使用

SQL 脚本 - 检查 IP 是否已列入黑名单

java - 多个客户端在没有服务器的情况下查询数据

mysql - 我如何在mysql中获得前5名的分数

php - 使用 php 从 mysql 中的 3 个表创建下载脚本

php - $result 在 mysql_fetch_assoc($result) 之后不可用,为什么

php - 如何在 PHP 中显示取决于用户输入的长查询的 MySQL 错误?

mysql - 使用不同表的计数进行计划和更新