我在php上编写注册系统。我试图创建两个具有相同电子邮件地址的帐户。我写了一个代码,应该检查它,但它不起作用。我可以使用相同的电子邮件创建任意数量的帐户。怎么了?
$sqlemail = "SELECT count(*) FROM 'users' WHERE email = ?";
$result = $connection->prepare($sqlemail);
$result->execute($email);
$emailused = $result->fetch();
if ($emailused!=false) {
echo 'An account with this e-mail address already exists!';
}
答案 0 :(得分:3)
使email
字段成为表的唯一键。然后,如果您尝试插入重复项,mysql将抛出错误。
然后,您可以处理错误,并显示您更友好的消息。您可以使用$result->errorCode()
检查错误。
这也使您无需在SELECT
之前制作INSERT
。
答案 1 :(得分:0)
你可以尝试这个,在users
而不是'
$sqlemail = "SELECT count(*) FROM `users` WHERE email = ?";
if ($emailused>0) {
echo 'An account with this e-mail address already exists!';
}
答案 2 :(得分:0)
即使电子邮件带有多个结果,脚本也会执行,因为您没有查杀脚本!您需要使用exit;
或die()
来阻止他们继续进行,或者重新指导某些内容。
if ($emailused>0) {
echo 'An account with this e-mail address already exists!';
exit;
}