为什么此PHP代码返回的回波总是相同? [重复]

问题描述 投票:0回答:1

此问题已经在这里有了答案:

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

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            

        }

    }   
php if-statement pdo
1个回答
1
投票

[使用执行方式是错误的,并且执行返回的是布尔值(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
   }   
© www.soinside.com 2019 - 2024. All rights reserved.