Подтвердить что ты не робот

Установите PDO для исключения исключений по умолчанию

Я всегда хочу, чтобы PDO выдавал исключения, если возникает ошибка, так как я всегда использую PDO так:

try {
    $dbh = new PDO("mysql:host=$kdbhost;dbname=$kdbname",$kdbuser,$kdbpw);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // some queries
}
catch (PDOException $e) {
    error_log('PDO Exception: '.$e->getMessage());
    die('PDO says no.');
}

Было бы неплохо, если бы был файл конфигурации, который я мог бы редактировать, чтобы сделать так, чтобы PDO выдавал исключения по умолчанию - возможно ли это?

Я хочу, чтобы это было так, поэтому мне не нужно писать эту строку каждый раз:

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

Обновление. С тех пор я создал библиотеку, которая обрабатывает доступ к базе данных для меня (включая установку PDO для исключения исключений).

4b9b3361

Ответ 1

Вы можете добавить функцию setAttribute к конструктору:

$pdo = new PDO('mysql:host=localhost;dbname=someTable', 'username', 'password', array(
  PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
));

Но я не могу найти способ добавить его в файл php.ini или какой-либо другой файл конфигурации.

Ответ 2

В дополнении к комментарию rdlowrey самым простым способом будет:

class MyPDO extends PDO {

    public function __construct($dsn, $username = null, $password = null, array $driver_options = null) {
         parent :: __construct($dsn, $username, $password, $driver_options);
         $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }

}

то просто вопрос

$dbh = new MyPDO("mysql:host=$kdbhost;dbname=$kdbname",$kdbuser,$kdbpw);