我需要对我的代码做什么,以便只有在数据库中不存在电子邮件时才会创建帐户? [重复]

This question already has an answer here:

<?php
    $errorMessage = "";
    // start the session and register the session variables
    session_start("ProtectVariables");

    // get the command value (use request since both post and get are used
    $firstname = $_POST['firstNameZ'];
    $lastname = $_POST['lastNameZ'];
    $password = $_POST['passwordZ'];
    $email = $_POST['emailZ'];      

    $sql = "SELECT email FROM account WHERE email='" . $email . "'";
    $result = mysql_query($sql,$db);

    while ($myrow = mysql_fetch_array($result)) {           
        if  ($email == $myrow['email'])  {
            $errorMessage = "Account with that email already exists";
        } else {
            $errorMessage = "Email doesn't match!";
        }
    }
    if ($_POST['submit']) {
        $sql_insert = "INSERT INTO account (firstname,lastname,password,email) VALUES ('$firstname','$lastname','$password','$email')";
        $result_insert = mysql_query($sql_insert,$db);
    }

?>

When I fill in the form and hit submit it just inserts into the database even though the emails are the same. I tried putting the if statement with the submit button into the while loop but that didn't work either.

</div>

Use mysql_num_rows function to check weather the user already exist on the database or not. Use the code below

    <?php
        $errorMessage = "";
        // start the session and register the session variables
        session_start("ProtectVariables");

        // get the command value (use request since both post and get are used
        $firstname = $_POST['firstNameZ'];
        $lastname = $_POST['lastNameZ'];
        $password = $_POST['passwordZ'];
        $email = $_POST['emailZ'];      

        $sql = "SELECT email FROM account WHERE email='" . $email . "'";
        $result = mysql_query($sql,$db);

     if(mysql_num_rows($result)==0){
        if ($_POST['submit']) {
            $sql_insert = "INSERT INTO account (firstname,lastname,password,email) VALUES ('$firstname','$lastname','$password','$email')";
            $result_insert = mysql_query($sql_insert,$db);
        }
    }
else
{
echo "the user with this email address already exist";
}
    ?>

Hope this helps you

You could change your condition to check whether or not the error message has been filled:

if ($_POST['submit'] && $errorMessage == "Email doesn't match") {
    $sql_insert = "INSERT INTO account (firstname,lastname,password,email) VALUES ('$firstname','$lastname','$password','$email')";
    $result_insert = mysql_query($sql_insert,$db);
}