使用"%"从SQL查询中获得奇怪的结果

时间:2015-12-01 16:48:35

标签: 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]. '%')

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

1 个答案:

答案 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 ?) 双通卡搜索,因此您可以使用

进行优化
%...%