質問: perl上でのmysql文について ユーザー名とパスワードを入力してもらい、パスワードが一致していれば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" これだと動きませんでした。多分シングルコーテーションで囲まなければいけない決まりがあるんだと思います。変数を文字列比較するときはこうしなければいけないのでしょうか?
回答: sql文の記述ルールで文字列はシングルコーテーションで囲まなければいけない事になってます。 あと、like検索なのにワイルドカードを使って無いようですが、いいのでしょうか? ワイルドカードを使わないならlikeではなく = にして完全一致検索させた方がいいと思いますよ。