前提・実現したいこと
検索フォームからキーワードを入力してもらい、それを受け取ってデータベースから検索結果を探すプログラムを組んでいます。
例えばデータベースに格納されている映画を検索する場合、検索フォームにはタイトルもしくは映画監督のキーワードを入力してもらうとします。
そのキーワードをcgiで受け取り、sqlで検索するプログラムをrubyで書いているのですが、データベース上のimformation表から複数の列名(title,supervisor)をwhereで検索する方法がよくわからないのでご教授ください。また、キーワードをスペースで区切って複数入力してもらった時(例えば、[君の名は 新海誠]のように)にはsplitで区切ってどのようにsqlで検索をかけるのかもいろいろ試しましたがわからなかったので合わせて教えていただけると幸いです。
sqlの検索文を2種類(titleとsupervisor)書けば一応検索できたのですが、キーワードで部分検索をかけていたので明らかに一致していないものも検索結果に表示されてしまったので困っています。
初めて質問するので拙いところもあると思いますが、よろしくお願いします。
発生している問題・エラーメッセージ
上記の通り
該当のソースコード
ruby
require("sqlite3")
require("cgi")
cgi = CGI.new
・・・データベースの読み込みなど省略・・・
key = cgi[key_word] #入力してもらったキーワードを受け取ります
db.execute("select title, supervisor from information where (ここをどう書けばいいかわからないです) like ?;", "%"+key+"%")#この検索文でtitleとsupervisorの2つから検索をかけて検索結果を表示したいです。
{|row|
printf(" <p>%s: %s\n", CGI.escapeHTML(row[0].to_s), CGI.escapeHTML(row[1].to_s),"</p>")
}
試したこと
where文周辺でいろいろいじってみましたが(where title, supervisor like)など 複数の列を同時に検索する方法がわかりませんでした。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。