今日は出かける予定があって開発できないのでちょっとだけ。昨日の続きで、検索フォームの機能を追加しました。今回はキーワード検索です。
とりあえず動きを確認したかったので、タイトルにキーワードが含まれているものを抽出するようにしました。キーワードが複数の場合はスペースで区切るのが一般的ですから、次のような流れで作りました。
1 キーワード中の全角スペースを半角スペースに変換(str_replace)
2 キーワードを半角スペースで区切って単語を配列に格納(explode)
3 キーワードが6個以上だとエラーメッセージを出して処理を終了
4 LIKE句を作って、キーワードごとにバインドして抽出
特に4のLIKE句を作るのにちょっと時間がかかりました。IN句を使うとすぐにできるみたいですが、SQLインジェクションの危険性があるとかなんとか・・・(prepareしても、バインドするために検索条件の配列を結合するときに危ないのだとか)。この辺はちゃんと調べておかなければいけませんが、とりあえずキーワードを5つに絞ったのでLIKE句を繋げてもそこまで長くはないのではないかと思いました。この辺どうしたらいいか良くわかっていないので、教えてくれる人がいたらいいなー。
コメント