gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 21:57:58 26 4
gpt4 key购买 nike

我尝试使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com