【发布时间】:2024-01-21 21:52:01
【问题描述】:
我正在使用以下脚本来使用 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'][]数组,之后脚本仍在运行, - 当与数据库的连接失败时,我收到以下致命错误:
注意:未定义变量:第 32 行 C:\xampp\htdocs[...]\test.php 中的 db
致命错误:在 C:\xampp\htdocs[...]\test.php 第 32 行对非对象调用成员函数 prepare()
注意:第 32 行是 $query = $db->prepare(...) 指令。
也就是说,脚本崩溃了,try/catch 好像也没用了。你知道为什么第二次 try/catch 不起作用以及如何解决吗?
感谢您的帮助!
编辑:有一些非常好的回复。我已经验证了一个不是我想要做的,但这可能是最好的方法。
【问题讨论】:
标签: php try-catch fatal-error