我一直试图阻止任何用户注册已在数据库中注册的电子邮件。我不能。也许是因为我必须同时检查三张桌子。我试过但失败了。我希望你能帮助我。
//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");
}
答案 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'那将是管理员,用户或工程师。这使您的查找更容易,而不必查看多个表。