我有一个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。我的功能有问题吗?
谢谢!
如果未找到任何行,则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; }