• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PDOを使用し複数キーワードでOR条件のDB検索)

PDOを使用し複数キーワードでOR条件のDB検索

このQ&Aのポイント
  • PDOを使用した複数キーワードでOR条件のDB検索をしたいです。対象レコード件数が少ないので「LIKE '%hoge%'」で書こうと思うのですが、ループで書くしかないのでしょうか。
  • シングルクオートなどエスケープの処理を別で考えなければならず、面倒なソースになってしまいます。他に良い方法があるのか考えています。
  • 初歩的な疑問ですが、どのようにすれば複数キーワードでOR条件のDB検索が簡単に行えるでしょうか?

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

  • ベストアンサー
  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.1

PDO を利用しているなら、プリペアードクエリを使うべきです。文字列のエスケープも適宜行ってくれますし。 like 比較対照にプレースホルダー「?」 を使うとすれば、str_repeat で条件節が作れます。 また、プレースホルダーへ与える文字に、ワイルドカード文字を追加するには、concatなどの文字列連結関数を使う必要があります。接続先のデータベースによって文字列連結用の関数や演算子が違うので、適宜置き換えてください。 $search_input =array('hoge','\%\_', '"', "'", '\\'); $sql = 'select * from tablename where columnname like concat("%", ?, "%") '. str_repeat( ' or columnname like concat("%", ?, "%") ' , count($search_input )-1 ); $stmt = $connect->prepare($sql); $stmt->execute($search_input );

tackn910
質問者

お礼

なるほど、このロジックならプリペアードクエリも使用することが出来ます。 str_repeatは知らなかったのですが、これも王道で適切ですね。 ご回答有り難う御座いました。

関連するQ&A