0

如果我使用这个语句:

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

我得到不正确的结果。它返回的太多了。任何想法我做错了什么?

4

3 回答 3

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";
于 2012-06-19T03:40:00.410 回答
1

您需要将第二个和第三个条件分组。

$query = "SELECT * FROM Products 
          WHERE category_description='".$search_dept."' AND 
               (material LIKE \"%$trimmed%\" OR ProductName LIKE \"%$trimmed%\") 
          ORDER BY $orderby 
          LIMIT $offset, $rowsPerPage";
于 2012-06-19T03:39:27.367 回答
1

你需要().

... AND ( material like \"%$trimmed%\" OR ProductName like \"%$trimmed%\" )
于 2012-06-19T03:40:42.453 回答