ho sempre voglia DOP per gettare eccezioni se si verifica un errore, come ho sempre usare DOP in questo modo:Set PDO per gettare le eccezioni di default
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.');
}
Sarebbe bello se ci fosse un file di configurazione ho potuto modificare per renderlo così PDO genera eccezioni di default - è possibile?
La ragione per cui voglio che questo è in modo da non dover scrivere questa linea ogni volta:
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Aggiornamento - allora ho creato una libreria che gestisce l'accesso al database per me (inclusa l'impostazione di PDO per generare eccezioni).
Non credo che quello che suggeriscono è possibile. Quindi, se è qualcosa che fai spesso, perché non creare un oggetto attorno alla funzionalità o almeno separare la funzionalità in un file incluso proceduralmente? – rdlowrey
In realtà, se è necessario rilevare le eccezioni PDO quando viene stabilita la connessione, non è necessario impostare l'attributo ATTR_ERRMODE. PDO :: __ construct() genererà sempre una PDOException se la connessione fallisce indipendentemente da quale PDO :: ATTR_ERRMODE è attualmente impostato – rodrunner
Non è necessario impostare PDO, per ottenere le informazioni di errore (se esiste) ed evitare sequenze di escape o SQL Si consiglia l'iniezione per utilizzare le istruzioni preparate, PDOStatement :: errorInfo restituire le informazioni che si cercano indipendentemente ATT_ERRMODE. – Ivanzinho