PHP:PDO如果用户存在检查不起作用

PHP:PDO如果用户存在检查不起作用,php,authentication,pdo,Php,Authentication,Pdo,我是PHP新手,我创建了User类/对象,它有一个检查用户的函数,它返回$stmt->rowCount,但当我在代码中检查它时,它只是跳过它,注册用户 代码如下: if(empty($name_err) && empty($email_err) && empty($username_err) && empty($password_err) && empty($confirm_password_err)) {

我是PHP新手,我创建了User类/对象,它有一个检查用户的函数,它返回$stmt->rowCount,但当我在代码中检查它时,它只是跳过它,注册用户

代码如下:

if(empty($name_err) && empty($email_err) && empty($username_err) && empty($password_err) && empty($confirm_password_err)) {   
            if($user->doesUserExist($email) === 0) {
                    $password = password_hash($password, PASSWORD_DEFAULT);
                    $user->register($username, $name, $email, $password); 
                } else {
                    $global_err = "Email is already taken";
                }
         }
以下是用户类中的函数:

public function doesUserExist($email) {
            $query = "SELECT * FROM users WHERE email = :email";
            $stmt = $this->connection->prepare($query);
            $stmt->bindParam(':email', $email);
            $stmt->execute();
            $rowcount = $stmt->rowCount($stmt);
            return $rowcount;

        }
如果$user->doesUserExist$email===0,请尝试更改为== 然后尝试如下更改您的方法:

public function doesUserExist($email) {
            $query = "SELECT * FROM users WHERE email = '" . $email . "';";
            $stmt = $this->connection->prepare($query);
            $stmt->execute();
            $stmt->setFetchMode(PDO::FETCH_ASSOC);
            $rowcount = count($stmt->fetchAll());
            return $rowcount;

 }
你应该试试

调用函数

$checkemail=$api->checkuseremail($email);
if($checkemail)
{
    echo $mail_check;
}
然后像这样定义你的函数

public function checkuseremail($email)
{
    $db=getDB();
    $stmt = $db->prepare("Select id from table_name where email=:email");
    $stmt->bindParam("email", $email, PDO::PARAM_STR);
    $stmt->execute();
    $count = $stmt->rowCount();
    if($count)
    {
        return true;
    }
    else
    {
        return false;
    }
}

它将返回已存在或不存在的电子邮件

尝试使用var_dump$user->doesUserExist$email打印函数响应,并将响应粘贴到此处它返回int0,尽管DBSolved中有电子邮件,查询中需要计数*。尝试将您的方法更改为我更新它的方法。否,我有var_dumpdoesUserExist$email,即使我在页面开头硬编码电子邮件,也会显示int0。我应该使用$query=SELECT count*,来自email=:email;的用户;。。无论如何谢谢你