Как я могу распознать ошибку выборки или пустой результат из ошибки выполнения с помощью php PDO mysql driver?
$sql = ' SELECT * '; $sql .= ' FROM test '; $sql .= ' WHERE id = 432 '; $statement = $this->_db->prepare($sql); $status = $statement->execute(); var_dump($status); $result = $statement->fetch(\PDO::FETCH_ASSOC); var_dump($result); output: bool(true) bool(false)
Итак, я готовлю инструкцию с pdo, а затем выполняю sql, а статус – true, потому что ошибки нет. Затем я получаю результат, и в этом конкретном случае строка с id = 432 не существует. Поэтому метод fetch возвращает false. Моя проблема заключается в том, что метод fetch возвращает false также при возникновении ошибки !.
Как я могу убедиться, что результат «false» – ошибка или пустой результат?
Если есть ошибка, то PDO выдаст исключение, которое вы можете поймать. Оберните свой код с помощью try catch, и он должен поймать любые исключения.
try { $rs = $db->prepare('SELECT * FROM foo'); $rs->execute(); $foo = $rs->fetchAll(); } catch (Exception $e) { echo 'Error: '.$e->getMessage(); }