SQL

当PDO中没有行时返回值

发布于 2021-04-09 20:46:35

我有一个PDO功能:

function(){
    $success=$this->query($query, $bindvalues);

    return ($success == true) ? $this->stmt->fetch(PDO::FETCH_ASSOC) : false;
}

当我执行选择查询以返回一行(或更多)时,它将返回例如:

array(1) { ["Id"]=> string(1) "1" }

当查询失败时(例如,如果我使用错误的语法),它将返回FALSE。

但是,如果在查询中未找到任何行,则它还会返回FALSE。

因此,查询中有错误且没有行的返回值都将返回FALSE。那怎么可能?仅当查询中有错误时,我才需要返回FALSE,例如,当没有结果时,我就需要返回NULL。我的功能有问题吗?

谢谢!

关注者
0
被浏览
73
1 个回答
  • 面试哥
    面试哥 2021-04-09
    为面试而生,有面试问题,就找面试哥。

    如果未找到任何行,则PDO :: fetch返回false。这是事实。因此,更改您的功能:

    function(){
        $success = $this->query($query, $bindvalues);
        if(!$success) {
            //handle error
            return false;
        }
        $rows = $this->stmt->fetch(PDO::FETCH_ASSOC);
        return $rows ?: null;
    }
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看