为什么这个PHP代码总是给我返回相同的回声



此代码是注册代码的一部分。但它总是返回"昵称已经存在"。我不明白为什么。

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            
}
}   

使用execute的方式是错误的,execute返回的是布尔值(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
}   

最新更新