我创建了以下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;
}
答案 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.
}