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

2 つの論理セットの基準 (より重要なのは 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

が必要()です。

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

2 番目と 3 番目の条件をグループ化する必要があります。

$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 に答える