我正在使用以下内容查询数据库:
SELECT * FROM DB.table WHERE hidden = 0 AND column1 LIKE '%$search%' OR column2 LIKE '%$search%';
但是,即使隐藏列为1,它仍然会输出查询.
这可能很简单,但我想我已经看了太多.
把括号括在OR
'd条件下.
默认情况下的优先级是这样的:
(hidden = 0 AND column1 LIKE '%$search%') OR (column2 LIKE '%$search%')
您希望它以这种方式运行:
(hidden = 0) AND (column1 LIKE '%$search%' OR column2 LIKE '%$search%')
如果您曾经研究过布尔代数或逻辑,您可能会记得逻辑AND与常规乘法相似,而逻辑OR与加法相对应.因此,如果你考虑初中代数课的操作顺序,这是记住这一点的好方法.而且你可能会养成OR
在查询中看到的任何时候检查这个的习惯.