- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PDOを使用し複数キーワードでOR条件のDB検索)
PDOを使用し複数キーワードでOR条件のDB検索
このQ&Aのポイント
- PDOを使用した複数キーワードでOR条件のDB検索をしたいです。対象レコード件数が少ないので「LIKE '%hoge%'」で書こうと思うのですが、ループで書くしかないのでしょうか。
- シングルクオートなどエスケープの処理を別で考えなければならず、面倒なソースになってしまいます。他に良い方法があるのか考えています。
- 初歩的な疑問ですが、どのようにすれば複数キーワードでOR条件のDB検索が簡単に行えるでしょうか?
- みんなの回答 (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 );
お礼
なるほど、このロジックならプリペアードクエリも使用することが出来ます。 str_repeatは知らなかったのですが、これも王道で適切ですね。 ご回答有り難う御座いました。