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 кажется бесполезным. Знаете ли вы, почему эта вторая попытка поймать?т работает и как это решить?

Спасибо за помощь!

РЕДАКТИРОВАТЬ: Есть несколько действительно хороших ответов. Я'я проверил тот, который не совсем то, что я хотел сделать, но который, вероятно, лучший подход ./

Ответы на вопрос(7)

Ваш ответ на вопрос