• 締切済み

ショッピングサイト★DBへのselect文での??

こんばんは。 神奈川の大学生です。 学校でJAVAを勉強しています。 質問お願いします。 ショッピングサイトを作っているんですが、 JDBCでショッピング商品の検索結果を取り出せる様に select文は LIKE % を使い 先頭文字にひっかかると 該当商品を全て取り出せる様にしました。 ここで %だけを入力してみると、 なぜか全商品が 検索でひっかかってしまいます。 なにか特別な対応をしないといけないんでしょうか? 本で調べてみたんですが、回答がみあたりません。 DBはoracleを使用しています。 初心者ですので、優しく解説して頂けたらと思います。

みんなの回答

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.4

SQLインジェクションとサニタイジングをキーワードに調べてみてください。

  • hilow1
  • ベストアンサー率53% (7/13)
回答No.3

>先頭文字にひっかかると該当商品を全て取り出せる様にしました。 これを実現するにはMySQLなりPostgreSQLなり、使用しているDBMS の正規表現を用いてクエリを作成すればよいのではないでしょうか。

  • neko_noko
  • ベストアンサー率45% (146/319)
回答No.2

>select文は LIKE % を使い 「%」は「0文字以上の任意の文字列」を表す文字なので、 「LIKE %」なら、「0文字以上の商品」を条件とすることになります。 なので、全データが出るわけです。 >なにか特別な対応をしないといけないんでしょうか? それは開発時に決めることです。 「何がやりたいか」によって、「何をするか」が決まります。 検索名に何も入れないで検索した場合にどうしたいか、例えば 1.全商品を表示させる 2.「商品名を入れてください」とメッセージを出す。 3.検索結果を0件にする 4.お勧め商品を出してみる など、いろいろな方法があります。 もちろん、方法により、プログラムやSQLの難度が大きく変わります。 今のSQLだと、1.の場合に当たりますね。 本来、開発する際に「こうしてほしい」という要望(要求定義)が作られ、それに沿って作成します。 学校の勉強なので、もしかしたら指定されているのかもしれないです。 指定されていなければ、自分で決定するのでしょうかねぇ・・・ 学校でまともなプログラムの勉強をしたことがないので分かりませんが。

回答No.1

>ここで%だけを入力してみると、なぜか全商品が検索でひっかかってしまいます。 当然のことのように思われるのですが。。。 本当はどうしたいのですか?

関連するQ&A

専門家に質問してみよう