プロが教える店舗&オフィスのセキュリティ対策術

ユーザー名とパスワードを入力してもらい、パスワードが一致していればOK、違っていればNGがでてくるプログラムを作りました。

if ( $password eq &sub_db( "SELECT password FROM login WHERE user LIKE '" . $user . "'") ) {
print "OK!";
} else {
print "NG!";
}

ちなみに &sub_db というのはSQL文を実行するだけのサブルーチンです。

想定通りに動きましたが、SQL文の

"SELECT password FROM login WHERE user LIKE '" . $user . "'"



'" . $user . "'"

なんですが、最初はこうしてました

"SELECT password FROM login WHERE user LIKE $user"

これだと動きませんでした。多分シングルコーテーションで囲まなければいけない決まりがあるんだと思います。変数を文字列比較するときはこうしなければいけないのでしょうか?

A 回答 (1件)

SQL文の記述ルールで文字列はシングルコーテーションで囲まなければいけない事になってます。



あと、LIKE検索なのにワイルドカードを使って無いようですが、いいのでしょうか?
ワイルドカードを使わないならLIKEではなく = にして完全一致検索させた方がいいと思いますよ。
    • good
    • 0
この回答へのお礼

ご返信、ありがとうございます。

LIKEは一部分でも一致すればOKなのですね。完全一致の場合は文字列でも = がきくのですね。
LIKEは文字列専用の演算子なのかと思いました。

お礼日時:2013/06/17 13:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!