try new exceptions custom catch all php mysql pdo php-ini

php - new - Establecer PDO para lanzar excepciones por defecto



try catch php mysql (2)

En extensión al comentario de rdlowrey, la manera más fácil sería:

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); } }

invocación, entonces, simplemente es una cuestión de

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

Esta pregunta ya tiene una respuesta aquí:

Siempre quiero que PDO genere excepciones si ocurre un error, ya que siempre uso PDO de esta manera:

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.''); }

Sería bueno si hubiera un archivo de configuración que pudiera editar para que PDO arroje excepciones de manera predeterminada. ¿Es esto posible?

La razón por la que quiero esto es para no tener que escribir esta línea cada vez:

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

Actualización : desde entonces he creado una biblioteca que maneja el acceso a la base de datos para mí (incluida la configuración de PDO para lanzar excepciones).


Puede agregar la función setAttribute al constructor:

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

Pero no puedo encontrar un método para agregarlo al archivo php.ini u otro archivo de configuración.