• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:うまくいきません)

プルダウンメニューで検索がうまくいかない

このQ&Aのポイント
  • プルダウンメニューから前方一致、中間一致、後方一致、完全一致の検索を行いたいが、うまくいかない。
  • 日本語入力を考慮し、全角スペースを半角に変換する必要がある。また、検索位置に応じてキーワードを加工する処理が必要である。
  • データベースから該当するデータを検索する際に、キーワードを用いて検索条件を組み立てる必要がある。

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

  • ベストアンサー
  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

$keywordsはpreg_splitの戻り値ですから「配列」ですよね?それなのに >$keywords='%'.$keywords; こういう書き方は無理でしょう。printしているから、ご自分でも「おかしい」のはわかっていると思います。"%Array"などとなっているのではありませんか? 書くとすれば下記のような感じでしょうか・・・ $where = ''; if (count($keywords) > 0) { // 要素数が0なら処理しない $like = array(); switch($mae_naka_ushiro){ case "mae": foreach ($keywords as $val) { $like[] = '(' . $key2 . ' like %' . $keywords . ')'; } break; case "naka": foreach ($keywords as $val) { $like[] = '(' . $key2 . ' like %' . $keywords . '%)'; } break; case "ushiro": foreach ($keywords as $val) { $like[] = '(' . $key2 . ' like ' . $keywords . '%)'; } break; case "zen": foreach ($keywords as $val) { $like[] = '(' . $key2 . ' = ' . $keywords . ')'; } break; } $where = ' where ' . implode('and', $like); } #まったくの未検証ですのであしからず #typoなどがあるかもしれません(汗 なお、上記ソースではエスケープ(mysql_real_escape_string)は端折っています。端折った理由は「ネイティブなMySQL関数はそろそろ先がないので早めにPDOなどで書き直すべき」ということです。プリペアドステートメントを使えばエスケープを意識する必要はありませんので。