Значение возвращается, когда в PDO нет строк
У меня есть функция 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, например, когда нет результатов. Что-то не так в моей функции?
Спасибо!
9
2 answers
Если строка не найдена, 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;
}
14
Author: Tobias Golbs, 2017-06-27 07:56:42
Вот, пожалуйста
function fetchRow($query, $bindvalues)
{
$stmt = $this->query($query, $bindvalues);
return $stmt->fetch();
}
-1
Author: Your Common Sense, 2013-08-30 10:17:25