使用php操作sql数据库时,处理错误的“正确”方法是什么?
我目前正在做的事情是这样的:
$connection = new mysqli('hostname', 'user', 'pass', 'database');
if ($connection->connect_errno) {
reportError("DB_CONNECTION_ERROR", $connection->connect_errno, $connection->connect_error);
displayError("DB_CONNECTION_ERROR");
}
$stmt = $connection->stmt_init();
$q = "query";
$stmt->prepare($q);
$stmt->bind_param('s', $username);
$stmt->execute();
reportError()是我编写的错误处理文件的一部分,并将错误记录在数据库中
displayError()是同一文件的一部分,告诉页面显示什么(而不是显示实际错误)。
但是我不确定如何检查其他错误,例如是否已成功准备语句或查询是否成功。任何建议赞赏!
答案 0 :(得分:2)
您是否觉得将数据库连接错误写入数据库并不奇怪?
我认为使用自定义displayError()函数也没有意义。它应该是通用的_503()函数,发送相应的标题以及一般的借口。
我认为自定义logError()函数也没有意义。 PHP非常能够自己记录错误。 trigger_error()
最适合我。
啊,这个。异常。我不确定如何检查其他错误,例如是否已成功准备语句
答案 1 :(得分:0)
在您的客户端代码中,您可以将代码包装在try / catch块中:
try {
} catch (Exception $e) {
}
有时,在try / catch块中存在无法解决的异常,例如,数据库服务器已关闭,并且严重依赖于数据库的站点无论如何都无法运行。
对于那些非常关键的问题,您可以允许异常向上冒泡。然后,您应该在脚本开头set an exception handler捕获这些异常,通知管理员并执行一些日志记录,然后向用户显示500错误页面。