電子書籍の厳選無料作品が豊富!

$sql = "select * from test ";
$sql .= "where id='".$_POST["id"]."' and pwd='".$_POST["pwd"]."'";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
if($row){
$msg = "OK";
}
}
としていますが、NGのときってどういう風にしたらいいのでしょうか?
基本的なことですみませんが、教えてください。

A 回答 (2件)

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {


$msg = "OK";
}
if(!$msg) $msg="NG";

でよいのでは?
whileのなかでif($row)をするのはナンセンスでしょう。
$rowがあるからwhileがまわっているのだから・・・

ただ普通ならmysql_num_rows()で処理する方がスマートだとはおもいますが・・・

この回答への補足

ご返答有難うございます。
いつもいつもご返答頂き感謝しております。
そういうことですね。
シンプルに考えるべきでした。
もっと勉強しなくては・・。

補足日時:2009/12/02 07:54
    • good
    • 0

質問の前に、そのSQLだと「SQLインジェクション」なり、IDやパスワードに不正な値が入り、SQLがエラーになることがあるかと思います。


受け取った値をそのまま、変数として扱ったり、SQLにそのまま代入してしまうのは、極めて危険です。シングルクォーテーションとか入れたらコケませんか?大丈夫ですか?

それはさておき、

OKと言うのは、認証が通った時のことですよね?
それに対して、NGは認証が通らなかった時ですよね?

それに対して、どのようにするかは、やりたいようにすればいいのではないでしょうか。
僕でしたら、入力画面に戻り、「IDまたはパスワードが間違っています」とか表示させますが。OK時の処理として、今回$msg = "OK";と記述しているなら、そのelseで何か処理書いてはいかがですか?

この回答への補足

SQLインジェクションの件は理解しています。
elseで書いても反応しなかったので困っています。
よろしくお願いします。

補足日時:2009/12/01 16:24
    • good
    • 0

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