私がやろうとしていること:マルチワード検索。ユーザーがドロップダウンからpubを選択すると、テーブル内のpubが「-」と等しくないレコードのみを取得する必要があります。
何が問題になっていますか:フィルタリングは実行されますが、最後のレコードは「-」が付いたレコードです
私が試したこと:
MySQLコンソールで次のクエリを試しました。
私の質問:
SELECT * FROM ticker where pub <> '-' AND (summary LIKE '%funny%' OR cust_exp LIKE '%funny%') OR (summary LIKE '%joke%' OR cust_exp LIKE '%joke%') OR (summary LIKE '%impact%' OR cust_exp LIKE '%impact%') ORDER BY `created` DESC
上記のクエリは、次の方法で生成されます。
マルチワード検索の構築。
$words = explode(" ",$keywords);
$queryWords = '';
$i=0;
foreach($words as $each){
$i++;
if ($i == 1){
$queryWords.=" (summary LIKE '%$each%' OR cust_exp LIKE '%$each%') ";
}
else{
$queryWords.=" OR (summary LIKE '%$each%' OR cust_exp LIKE '%$each%') ";
}
}
クエリコードのスニペット。
elseif ($ticket_type == 'Pub'){
if ($status == 'All'){
if (empty($product)){
$query="SELECT * FROM ticker where pub <> '-' AND".$queryWords."ORDER BY `$order_by` DESC";
}
編集:サンプルの検索文字列は「面白いジョークの影響」です