Try / Catch не работает с этим запросом PDO - PullRequest
0 голосов
/ 14 июля 2011

У меня есть скрипт, который я обновляю, заменяя встроенные запросы mysql подготовленными инструкциями PDO и запросами. Когда запрос верен или возвращает результат, он работает нормально. Однако, когда в операторе запроса есть ошибка, try / catch не работает. Например, я использовал этот тестовый код:

$query = $this->dbh->prepare('SELEC menu_item, hyperlink, admin FROM top_menu;');
    try
    {
            $query->execute();
        $row = $query->fetch(PDO::FETCH_ASSOC));
                    die("success");

    }

    catch(Exception $e)
    {
        die("fail");        
    }

Запрос неправильный («SELEC» вместо «SELECT»), поэтому поток сценария должен идти в скобках исключений / ошибок, но это не так; Я продолжаю получать "успех". Я пытался использовать catch (PDOException $ e) вместо catch (Exception $ e) с точно такими же результатами.

Что я делаю не так, и как я могу это исправить? Спасибо.

Ответы [ 2 ]

1 голос
/ 02 февраля 2016

Ответ на подобную проблему здесь , PDO не будет выдавать исключения, если вы не сообщите об этом. Вы бежали:

$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

на объекте PDO.

0 голосов
/ 14 июля 2011

Для функции fetch () PDO при ошибке возвращается FALSE. Исключение не выбрасывается.

См .: http://php.net/manual/en/pdostatement.fetch.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...