防止电子邮件重复

时间:2017-03-01 21:53:16

标签: php sql

我一直试图阻止任何用户注册已在数据库中注册的电子邮件。我不能。也许是因为我必须同时检查三张桌子。我试过但失败了。我希望你能帮助我。

        //Check whether Email exists or not
        $check="SELECT * FROM admins, engineers, users WHERE admins.Email='$email' OR engineers.Email='$email' OR users.Email='$email'";
        $results=mysql_query($check);



        //Confirm that the Email doesn't exist
        if(mysql_num_rows($results) == 0)
        { $check='true'; }



        //Error message to the user that the Email already exists.
        else
        {
            header("location: register.php?email=false"); 
        }



        //Register the data
        if($check=='true')
        {
            mysql_query("INSERT INTO admins (Admin, Password, Email, Phone, Date, Time) VALUES ('$username', '$password','$email', '$phone', '$date', '$time')");
            header("location: login.php?register=success");
        }

2 个答案:

答案 0 :(得分:1)

使用UNION而不是跨产品。

SELECT 1 FROM admins WHERE email = '$email'
UNION
SELECT 1 FROM engineers WHERE email = '$email'
UNION
SELECT 1 FROM users WHERE email = '$email'

只有在所有表中找到匹配项时,交叉产品才会起作用,而不仅仅是其中一个。

答案 1 :(得分:0)

您可以将所有电子邮件存储在一个表格中,从而使您的生活更轻松。您可以使用名为“' type'那将是管理员,用户或工程师。这使您的查找更容易,而不必查看多个表。