此问题已经在这里有了答案:
此代码是注册代码的一部分。但是它总是返回“昵称已经存在”。我不明白为什么。
if (isset($_POST['create'])) {
$nickname = $_POST['nickname'];
$email = $_POST['email'];
$password = $_POST['password'];
$slt1 = "SELECT nickname FROM users WHERE nickname='$nickname'";
$slt2 = "SELECT email FROM users WHERE email='$email'";
$stmt1 = $db->prepare($slt1);
$stmt2 = $db->prepare($slt2);
if($stmt1->execute([$nickname])) {
echo 'Nickname already exist';
} elseif ($stmt2->execute([$email])) {
echo 'email already exist';
} else {
//more code here
}
}
[使用执行方式是错误的,并且执行返回的是布尔值(TRUE / FALSE),但不是查询已选择/受影响的行数。
因此,您需要获取查询影响的行数并对该值执行“ if”。
喜欢这个,
$stmt1->execute();
$number_of_rows = $stmt1->num_rows;
if($number_of_rows == 1){
echo 'Nickname already exist';
}
else{
//your code to insert data
}