我有一个PDO功能:
function(){
$success=$this->query($query, $bindvalues);
return ($success == true) ? $this->stmt->fetch(PDO::FETCH_ASSOC) : false;
}
当我执行返回一行(或更多)的select查询时,它将返回例如:
array(1) { ["Id"]=> string(1) "1" }
当查询失败时(例如我的语法错误),它将返回FALSE。
但是如果查询中没有找到任何行,它也会返回FALSE。
因此,查询中出现错误且没有行的返回值都将返回FALSE。怎么可能?我只需要在查询中出现错误时返回FALSE,并且我需要返回NULL,例如,当没有结果时。我的功能有问题吗?
谢谢!
答案 0 :(得分: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;
}
答案 1 :(得分:-1)
你去吧
function fetchRow($query, $bindvalues)
{
$stmt = $this->query($query, $bindvalues);
return $stmt->fetch();
}