网站中重复用户的注册约束

时间:2014-03-29 14:34:05

标签: php mysql sql mysqli

我创建了以下sql语句,以检查用户是否已存在于数据库中,如果存在,则阻止其注册。但是,我做错了,因为现在每个注册都被拒绝了。

$res = mysqli_query($mysqli, "SELECT * FROM Users WHERE Email = '{$_POST['email']}' OR Fullname = '{$_POST['fullname']}'");

if (count($res) > 0) { 
     echo "<script type=\"text/javascript\">window.alert('User already exists!');window.location.href = '/Register.php';</script>";
     exit; 
}

2 个答案:

答案 0 :(得分:1)

如果要防止重复用户,请使用约束或唯一索引(实际上是相同的):

create unique index users_email on users(email);
create unique index users_fullname on users(fullname);

这将防止重复项进入数据库级别的这些字段。比在应用程序级别尝试这样做要安全得多。

答案 1 :(得分:0)

您可以阅读手册mysqli_query()

  

将返回mysqli_result个对象。

您可以使用mysqli_num_rows()正确执行此操作:

$result = mysqli_query($mysqli, "SELECT * FROM Users WHERE Email = '{$_POST['email']}' OR Fullname = '{$_POST['fullname']}'");
$row_count = mysqli_num_rows($result);
if ($row_count > 0) {
    //etc.
}