• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:LIKE述語/SQLとPHPを使った検索フォーム)

LIKE述語/SQLとPHPを使った検索フォーム

このQ&Aのポイント
  • SQLとPHPを使った検索フォームで、名前を入力して該当する行を検索する方法を教えてください。
  • 検索フォームに入力された名前を使って、SQLのLIKE述語を使って部分一致検索を行いたいです。
  • 詳しい検索フォームの実装方法を教えてください。

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

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

>ご指摘の通りに書き換えましたが、検索できませんでした。 一番高い可能性としては、POSTされたデータのキャラクターコードと DBに格納されたキャラクターコードが異なるということです この手のテストをする場合はキャラクターコードでの差異が出づらい 「英数字のみ」でまずテストをすることをお勧めします。 ここで動作確認ができたら次の段階として日本語検索を試してください プリペアドステートメントについてはphpマニュアルなどご一読ください http://www.php.net//manual/ja/pdo.prepared-statements.php

pino1961
質問者

お礼

ありがとうございました! いろいろいじっていたら、動きました。 プリペアドステートメントについても参考サイトを教えていただき本当にありがとうございました。 まだまだ意味もよくわからずにとにかく作っている状況です。 今後も勉強していきますので、また機会がありましたらよろしくお願いします。

その他の回答 (1)

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

>name LIKE='%" . $_POST["name"] . "%' " だと name LIKE='%山%' になっちゃいますね イコールをとって、 name LIKE '%" . $_POST["name"] . "%' " にしてください。 ちなみにPOSTされてきたデータをそのままSQLに組み込むのはNGです PDOをつかっているならプリペアド処理をしてください

pino1961
質問者

お礼

ご回答ありがとうございました。 ご指摘の通りに書き換えましたが、検索できませんでした。 (結果が空白になってしまいます。) 当方、SQLの初心者で、「プリペアド処理」という言葉もはじめて知りました。 何か根本的にやり方が間違っているのでしょうか。 時間をかけて勉強するつもりですが、もし、他にヒントになるようなことがありましたら、教えていただければと思います。 お手数をおかけして申し訳ありませんでした。