Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PDO跳过if语句_Php_Pdo - Fatal编程技术网

Php PDO跳过if语句

Php PDO跳过if语句,php,pdo,Php,Pdo,我快发疯了,为什么他总是跳转到别的地方并返回false。 我不明白我做错了什么 try { $query = 'SELECT userID, firstname, surname, email FROM jinx_users WHERE email = :email AND password = :password'; $this->dbh->beginTransaction(); $stmt = $this->dbh-

我快发疯了,为什么他总是跳转到别的地方并返回false。 我不明白我做错了什么

try 
    {
        $query = 'SELECT userID, firstname, surname, email FROM jinx_users WHERE email = :email AND password = :password';
        $this->dbh->beginTransaction();
        $stmt = $this->dbh->prepare($query);
        $stmt->bindParam(':email', $email, PDO::PARAM_STR);
        $stmt->bindParam(':password', $password, PDO::PARAM_STR);
        $stmt->execute();
        if($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
            return true;
        }else{
            return false;
        }
        $stmt = null;
    } 
    catch (Exception $e) 
    {
        $stmt = null;
        $this->dbh->rollback();
        exit();
    }

if语句不是有效的语句。除此之外,应使用Try-Catch检查在Try/Catch中是否可以成功调用数据库或设置参数等,以避免返回true或false。这么说来,我想你想要的是:

try {
     $query = 'SELECT userID, firstname, surname, email FROM jinx_users WHERE email = :email AND password = :password';
     $this->dbh->beginTransaction();
     $stmt = $this->dbh->prepare($query);
     $stmt->bindParam(':email', $email, PDO::PARAM_STR);
     $stmt->bindParam(':password', $password, PDO::PARAM_STR);
     $stmt->execute();

} catch (Exception $e) {
     var_dump($e->getMessage();
     die();
}

if($stmt->fetch(PDO::FETCH_ASSOC)) {
     return true;
} else {
     return false;
}

->如果没有更多的记录可获取,fetch将返回布尔值false。查询与任何内容都不匹配。如果它一直跳转到那里,那么你的电子邮件/密码就不正确。对不起,我实际上没有启动会话$_会话['firstname']=行['firstname'];我最后加上真假,看看它返回了什么,这并没有传递我的答案如果连接能够获取任何内容,则函数将返回true。如果出现数据库错误,它将转储消息并终止。