1

1)指定された電子メールアドレスを持つエントリがDBに既に存在するかどうかを確認し、そうでない場合は2)DBに新しいエントリを入力するスクリプトを作成しようとしています。

これは私が現在持っているコードです:

$result = mysql_query("SELECT * FROM cbsclassy WHERE email = '$email' LIMIT 1");
$num_rows = mysql_num_rows($result);

if ($num_rows > 0) { echo "It seems that you're already participating. It is
only allowed to make one entry into the competition. <a href=index.html>Click to
return to the previous page</a>.";  
}

else { $sql="INSERT INTO cbsclassy (name, email, answer) VALUES
        ('$name','$email','$answer')";

        if (!mysqli_query($con,$sql)) { die('Error: ' . mysqli_error());
        }

        echo "You're now participating in the contest. The winners will be
        notified        directly via email. Good luck! <a     href=index.html>Click
        to return to the previous page</a>.";
}

DB への入力に関しては、スクリプトは正常に動作していますが、電子メール アドレスが DB に既に存在するかどうかはわかりません。誰でも問題を見つけることができますか?

4

2 に答える 2

4

他の前に2つある}ので、毎回トリガーされます。

UNIQUE KEYメールフィールドにを設定し、挿入時に量をチェックして、affected rows存在するかどうかを確認する方が効率的です。

また、コメントに記載されているように、コードはに対して脆弱ですSQL Injection。を使用することをお勧めしますprepared statements

于 2013-03-03T23:53:02.917 に答える
0

if/else構文を修正します

if ($num_rows > 0) { echo "It seems that you're already participating. It is
only allowed to make one entry into the competition. <a href=index.html>Click to
return to the previous page</a>.";  
     } //here remove a }

  else { $sql="INSERT INTO cbsclassy (name, email, answer) VALUES
         ('$name','$email','$answer')";
               if (!mysqli_query($con,$sql)) { die('Error: ' . mysqli_error());
             }
           //and also here   
    echo "You're now participating in the contest. The winners will be
       notified        directly via email. Good luck! <a     href=index.html>Click
        to return to the previous page</a>.";
    }
于 2013-03-03T23:54:35.923 に答える