• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:単語ではなく複数語検索)

単語ではなく複数語で検索する方法

このQ&Aのポイント
  • 単語ではなく複数のワードで検索する方法について解説します。
  • 検索ボックスに複数のワードを入力することで、それぞれのワードに該当するデータを取得することができます。
  • 検索ボックスに[コーラ お茶]などの複数のワードを入力し、データベースのテーブルに対して部分一致検索を行う方法を説明します。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

なんどか例示しているが、PHPでMySQLのWHERE句を指定するときの常套として 「WHERE 1」を書いておくのが賢明,ちなみにこれは全てを表示するという意味 条件を設定するときはANDでつなぐ。 WHERE 1 →全て表示 WHERE 1 AND X=1 →Xが1の時 WHERE 1 AND X=1 AND Y=2 →Xが1でYが2の時 プログラム的にWHERE句を書くときには格段に効率があがる なおOR検索の場合「AND (0 OR 条件1 OR 条件2 ・・・)」とつなぐ 今回の質問であれば <?PHP $arr=preg_split("/\s+/",trim($_REQUEST['usersearch'])); ; $query = "select byou,syou from kensaku2 where 1"; foreach($arr as $key=>$val){ if($val==="") continue; if($key==0) $query.=" AND (0"; $query.=" OR syou like '%".mysql_real_escape_string($val)."%'"; if($key==count($arr)-1) $query.=" )"; } print $query; ?>

noname#142312
質問者

お礼

詳しい回答ありがとうございました。

その他の回答 (1)

  • Suzi
  • ベストアンサー率38% (130/334)
回答No.1

 [コーラ お茶]の間のスペースが半角か全角か分からないので、全角か半角を全て、例えばスラッシュ「/」に変換して、その/で区切って配列に入れます。    で、foreacheとかで、上記、コーラかお茶にヒットするのを配列に入れれば良いのではないでしょうか。

関連するQ&A