Zawsze chcę PDO rzucać wyjątków w przypadku wystąpienia błędu, a ja zawsze używać PDO tak:Set PDO rzucać wyjątki domyślnie
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.');
}
Byłoby miło, gdyby nie było to plik konfiguracyjny mogę edytować aby było tak, że PDO domyślnie wyrzuca wyjątki - czy to możliwe?
Powodem chcę to tak nie mam napisać ten wiersz za każdym razem:
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Aktualizacja - I od tego czasu stworzył bibliotekę, która obsługuje dostęp do bazy danych (dla mnie w tym ustawienie PDO do zgłaszania wyjątków).
Nie sądzę, co proponujesz jest możliwe. Więc, umm, jeśli jest to coś, co robisz często, dlaczego nie utworzyć obiektu wokół funkcjonalności lub przynajmniej oddzielić funkcjonalność w pliku zawartym proceduralnie? – rdlowrey
W rzeczywistości, jeśli po nawiązaniu połączenia wystarczy przechwycić wyjątki PDO, nie trzeba ustawiać atrybutu ATTR_ERRMODE. PDO :: __ construct() zawsze rzuci wyjątek PDOException, jeśli połączenie nie powiedzie się bez względu na to, które PDO :: ATTR_ERRMODE jest aktualnie ustawione – rodrunner
Nie jest konieczne ustawianie PDO, aby uzyskać informacje o błędzie (jeśli istnieje) i unikać sekwencji escape lub SQL Zaleca się, aby wtryskiwanie korzystało z Przygotowanych instrukcji, PDOStatement :: errorInfo zwraca informacje, których szukasz bez względu na ATT_ERRMODE. – Ivanzinho