- ベストアンサー
FORM内容をMySqlと比較
- FORMで入力されたデータとMySqlのデータを比較するプログラムを作成していますが、常に「間違いです」と表示されます。
- プログラムの中でデータベースの内容を配列に格納し、FORMで入力されたデータと比較しています。
- 単純な見落としやエラーがあるのか、正しい結果が得られない原因を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
がると申します。 んっと。まず「自分で出来るデバッグ方法」なのですが。 一番簡単なのは、各変数の状態をprintしてみる方法をお勧めします。 ものすごく原始的なdebug方法ですが、案外「ほとんどの言語のほどんどのシチュエーション」で有効です。 具体的には while($MyRow = mysql_fetch_array($MyResult,MYSQL_ASSOC)) { $answer[] = $MyRow["a"];//データベース内容を配列に $param_val[$i] = $_POST["T".$i]; print("<br>"); print "answer is " . $answer[$i] . "<BR>\n"; print "param value is " . $param_val[$i] . "<BR>\n"; print("<br>"); if($answer[$i] == $param_val[$i] ){ print("OK"); }else{ print("間違いです。"); } print("<br>"); $i++; } と、こんな感じです。 こうすることである程度のdebugが出来るようになると思います。 で、間違いの原因は 「$answer[] = $MyRow["a"];//データベース内容を配列に」 であると予想されます。 ここは $answer = $MyRow["a"];//データベース内容を配列に と書き、以降の$answer[$i] を $answer に全て修正することでうまくいくと思います。 また、余談ではありますが、 「$param_val[$i] = $_POST["T".$i];」 も 「$param_val = $_POST["T".$i];」 と書き、以降の$param_val[$i] を $param_valに修正してよいと思います。 また、一応$iを、whileの直前の行で $i = 0; と初期化しておいたほうがよいかもしれません。 投稿されたプログラムを見る限りだと、気になるのはこのあたりでしょうか。
お礼
ありがとうございます。 問題が解決しました! if文の条件を指摘されたとおりに変更したらうまくいきました。 単純な質問に丁寧に答えていただいてありがとうございました。