Значение возвращается, когда в 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, например, когда нет результатов. Что-то не так в моей функции?

Спасибо!

Author: Jordy, 2013-08-30

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