我尝试使用SQL从我的数据库中获取结果,但我的结果与我用作输入的内容不一致。我总是从包含整数和字符的人那里得到结果。例如,如果我搜索" liu"我得到" 2LK020"的结果。我既不能用整数搜索并得到正确的结果......我使用:
$result = queryDatabase(
"SELECT course_tag, course_name FROM course WHERE course_tag OR course_name LIKE ?",
array(1 => '%' .$parameters[0]. '%')
使用"%"有问题吗?或者为什么我会得到这个奇怪的答案?
答案 0 :(得分:4)
阅读本文: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或其他“falsey”值,它几乎总是评估为true
值,并使整个{{1}子句评估为WHERE
。
您无法针对单个true
值测试多个字段。这根本行不通。您需要单独测试每个:
LIKE
但是,由于您正在进行WHERE (course_tag LIKE ?) OR (course_name LIKE ?)
双通卡搜索,因此您可以使用
%...%