9

我有一个 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。我的功能有问题吗?

谢谢!

4

2 回答 2

14

如果没有找到行 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;
}
于 2013-08-30T10:09:19.483 回答
-1

干得好

function fetchRow($query, $bindvalues)
{
    $stmt = $this->query($query, $bindvalues);
    return $stmt->fetch();
}
于 2013-08-30T10:17:25.517 回答