如果我使用此声明:
$query = "select * from Products where category_description='".$search_dept."' ORDER BY $orderby LIMIT $offset, $rowsPerPage";
我返回3个结果,这是正确的。
如果我使用此声明:
$query = "select * from Products where material like \"%$trimmed%\" OR ProductName like \"%$trimmed%\" ORDER BY $orderby LIMIT $offset, $rowsPerPage";
我得到了正确的结果。
但是,如果我尝试将它们组合起来:
$query = "select * from Products where category_description='".$search_dept."' AND material like \"%$trimmed%\" OR ProductName like \"%$trimmed%\" ORDER BY $orderby LIMIT $offset, $rowsPerPage";
我的结果不正确。它返回太多了。我有什么想法吗?
答案 0 :(得分:3)
我建议在两个逻辑标准集周围添加括号(更重要的是OR部分)。事实上,你隐含地信任操作的顺序,我不认为它决定你想要它的方式。括号应该可以解决问题:
$query = "select * from Products
where category_description='".$search_dept."'
AND (material like \"%$trimmed%\" OR ProductName like \"%$trimmed%\")
ORDER BY $orderby LIMIT $offset, $rowsPerPage";
答案 1 :(得分:1)
您需要对第二个和第三个条件进行分组。
$query = "SELECT * FROM Products
WHERE category_description='".$search_dept."' AND
(material LIKE \"%$trimmed%\" OR ProductName LIKE \"%$trimmed%\")
ORDER BY $orderby
LIMIT $offset, $rowsPerPage";
答案 2 :(得分:1)
您需要()
。
... AND ( material like \"%$trimmed%\" OR ProductName like \"%$trimmed%\" )