【发布时间】:2011-02-22 12:12:05
【问题描述】:
我正在尝试在我的 PHP Web 应用程序中捕获数据库 (MYSQL) 错误。目前,我看到有 mysqli_error()、mysqli_errno() 等函数用于捕获最后发生的错误。但是,这仍然需要我在我的 php 代码中使用重复的 if/else 语句来检查错误发生。您可以查看下面的代码以了解我的意思。有没有更好的方法来做到这一点? (或)我是否应该编写自己的代码来引发异常并将它们捕获在一个地方?另外,PDO 是否引发异常?谢谢。
function db_userexists($name, $pwd, &$dbErr)
{
$bUserExists = false;
$uid = 0;
$dbErr = '';
$db = new mysqli(SERVER, USER, PASSWORD, DB);
if (!mysqli_connect_errno())
{
$query = "select uid from user where uname = ? and pwd = ?";
$stmt = $db->prepare($query);
if ($stmt)
{
if ($stmt->bind_param("ss", $name, $pwd))
{
if ($stmt->bind_result($uid))
{
if ($stmt->execute())
{
if ($stmt->fetch())
{
if ($uid)
$bUserExists = true;
}
}
}
}
if (!$bUserExists)
$dbErr = $db->error();
$stmt->close();
}
if (!$bUserExists)
$dbErr = $db->error();
$db->close();
}
else
{
$dbErr = mysqli_connect_error();
}
return $bUserExists;
}
【问题讨论】:
-
我认为例外是最好的方法。 PDO 通过异常处理,您只需在创建对象时设置 PDO::ERRORMODE_EXCEPTION。
-
@Cfreak:让您的评论成为答案。这是一个很好的。
-
@Cfreak 我同意@webbiedave,请回答,因为我想投票!
-
按要求回答了
标签: php mysql error-handling