PHP: современная версия "or die ();" для обработки ошибок - PullRequest
14 голосов
/ 29 декабря 2011

Когда я впервые начал изучать PHP, я писал операторы запросов, аналогичные приведенным здесь:

mysql_query("SELECT * FROM `table`") or die(mysql_error());

Каков наилучший из современных способов достижения того же эффекта, что и выше?1004 *

Насколько я понимаю, в сегодняшнем мире с классами, функциями и общими ООП выполнение таких запросов очень неэффективно.Что мы должны делать по-другому?

1 Ответ

19 голосов
/ 29 декабря 2011

Вы должны использовать PDO, который будет генерировать исключения, которые могут быть перехвачены - или, если не перехвачен, они убьют скрипт так же, как die ().

$db = new \PDO(
    'mysql:dbname=database;host=localhost',
    'root',
    '',
    array(
        \PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
        \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
        \PDO::ATTR_ERRMODE            => \PDO::ERRMODE_EXCEPTION
    )
);

$db->query('SELECT INVALID FOO'); // Exception!!!

this_never_gets_run();
...