1

このクエリは、郵便番号ごとにアイテムのリストを生成します。

$ziparrayimplode = implode(",", $ziparray);
        $listingquery = "SELECT * FROM listings WHERE (CONCAT(title, description) LIKE '%".$searchstring."%') AND auc_cat LIKE '%".$category."%' AND zip IN ($ziparrayimplode) AND all_zip=$allzip ORDER BY list_ts DESC $pages->limit";
        $listinghistory = mysql_query($listingquery) or die(mysql_error());

all_zip=$allzip の WHERE ステートメントで「AND」を使用すると、all_zip に該当するすべてのアイテムが表示されますが、$ziparray 内のアイテムは表示されません。WHERE ステートメントで「OR」を使用すると、$ziparray に該当する項目と $allzip が含まれますが、検索機能がまったく機能しません。

このクエリの言い回しは正しいですか、それとも WHERE ステートメントで "OR" を使用して、検索のコーディング方法の問題を探す必要がありますか?

4

1 に答える 1

2

OR / AND演算子の優先順位で遊んで管理することもできます(奇妙な結果は、実際には演算子の優先順位の誤った使用の「犠牲者」であることを示しているようです)、または括弧を追加するだけです。

...
AND (zip IN ($ziparrayimplode) OR all_zip=$allzip)
ORDER BY...
于 2013-02-13T15:13:22.267 に答える