PHP try / catch и фатальная ошибка
m используя следующий скрипт для использования базы данных с использованием PHP:
try{
$db = new PDO('mysql:host='.$host.';port='.$port.';dbname='.$db, $user, $pass, $options);
}
catch(Exception $e){
$GLOBALS['errors'][] = $e;
}
Теперь я хочу использовать этот дескриптор базы данных для выполнения запроса с использованием этого кода:
try{
$query = $db->prepare("INSERT INTO users (...) VALUES (...);");
$query->execute(array(
'...' => $...,
'...' => $...
));
}
catch(Exception $e){
$GLOBALS['errors'][] = $e;
}
Вот проблема:
Когда соединение с БД в порядке, все работает,Когда соединение не удается, но я нет БД, у меня есть$GLOBALS['errors'][]
массив и сценарий все еще работает потом,Когда соединение с БД не удалось, я получаю следующую фатальную ошибку:Примечание: неопределенная переменная: db в C: \ xampp \ htdocs [...] \ test.php в строке 32
Неустранимая ошибка: вызов функции-члена prepare () для необъекта в C: \ xampp \ htdocs [...] \ test.php в строке 32
Замечания: Строка 32 является$query = $db->prepare(...)
инструкция.
То есть скрипт вылетает, а try / catch кажется бесполезным. Знаете ли вы, почему эта вторая попытка поймать?т работает и как это решить?
Спасибо за помощь!
РЕДАКТИРОВАТЬ: Есть несколько действительно хороших ответов. Я'я проверил тот, который не совсем то, что я хотел сделать, но который, вероятно, лучший подход ./