MySQL选择使用LIKE和AND在同一语句中不起作用

时间:2012-06-19 03:34:44

标签: php mysql

如果我使用此声明:

$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";

我的结果不正确。它返回太多了。我有什么想法吗?

3 个答案:

答案 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%\" )