PHP try / catch i fatal error
Używam następującego skryptu do korzystania z bazy danych przy użyciu PHP:
try{
$db = new PDO('mysql:host='.$host.';port='.$port.';dbname='.$db, $user, $pass, $options);
}
catch(Exception $e){
$GLOBALS['errors'][] = $e;
}
Teraz chcę użyć tego uchwytu bazy danych do wykonania żądania przy użyciu tego kodu:
try{
$query = $db->prepare("INSERT INTO users (...) VALUES (...);");
$query->execute(array(
'...' => $...,
'...' => $...
));
}
catch(Exception $e){
$GLOBALS['errors'][] = $e;
}
Oto problem:
Gdy połączenie z bazą danych jest OK, wszystko działa,Gdy połączenie się nie powiedzie, ale nie korzystam z bazy danych, mam$GLOBALS['errors'][]
tablica i skrypt nadal działa,Gdy połączenie z bazą danych nie powiedzie się, otrzymuję następujący błąd krytyczny:Uwaga: Niezdefiniowana zmienna: db w C :ampamp htdocs [...] test.php w linii 32
Błąd krytyczny: wywołanie funkcji składowej prepare () na obiekcie nie będącym obiektem w C :ampamp htdocs [...] test.php w linii 32
Uwaga: Linia 32 to$query = $db->prepare(...)
instrukcja.
Oznacza to, że skrypt ulega awarii, a try / catch wydaje się być bezużyteczny. Czy wiesz, dlaczego ten drugi try / catch nie działa i jak go rozwiązać?
Dzięki za pomoc!
EDYTOWAĆ: Jest kilka naprawdę dobrych odpowiedzi. Sprawdziłem, który nie jest dokładnie tym, co chciałem zrobić, ale jest to prawdopodobnie najlepsze podejście.