AND,或输出错误的结果

时间:2010-10-08 09:25:38

标签: php mysql operators operator-precedence

假设我使用2个AND和一个OR来检索结果,首先使用name上的输入文本值进行测试,我可以得到正确的结果,但是当我更改{{1}时除了空字符串之外的任何值,结果不会改变,它只查询$getc值。有什么问题?

name

1 个答案:

答案 0 :(得分:8)

尝试将()放在name LIKE '%$asd%' OR descriptions LIKE '%$asd%'周围:

$query1 = "SELECT * FROM $tableName WHERE (name LIKE '%$asd%' OR descriptions LIKE '%$asd%') AND category='$getc' AND company_type='$dsp' LIMIT $start, $limit";

其中categorycompany_type 必须 匹配且 至少一个 namedescriptions必须匹配。

原因:

a OR b AND c AND d 

被视为以下内容,AND的{​​{3}}高于OR

a OR (b AND c AND d)

但你想要的是:

(a OR b) AND c AND d