У меня есть функция 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; }
Ну вот
function fetchRow($query, $bindvalues) { $stmt = $this->query($query, $bindvalues); return $stmt->fetch(); }