使用纯PHP代码(而不是框架)有一种更优雅的方式来处理mysqli错误,如下所示:
if (!mysqli_query($con, $sql)) {
# Throw error so we can handle them
echo mysqli_error($con);
# handle a duplicate email
if (strpos(mysqli_error($con), "email_UNIQUE") !== false ) {
$_SESSION["errors_found"] = true;
array_push($_SESSION["error_messages"], "Email given is already registered.");
}
# handle a duplicate username
else if (strpos(mysqli_error($con), "username_UNIQUE") !== false ) {
$_SESSION["errors_found"] = true;
array_push($_SESSION["error_messages"], "Username is already taken.");
}
# handle any other sql query error...
else {
die("Database query error: " . mysqli_error($con));
}
}
答案 0 :(得分:0)
首先,我不会将这样的过程称为“处理mysqli错误”,而是“用户输入验证”。
其次,我根本不会以这种方式进行这样的验证。
我一直认为,通常使用SELECT查询而不是INSERT查询来验证针对数据库的用户输入 它不仅可以使您的应用程序无错误,还可以使其更加灵活,例如允许对基于AJAX的注册进行单独验证。
至于真正的mysqli错误 - 你真的必须处理它们,而不仅仅是死亡。
最方便又简单的方法就是抛出异常:
if (!mysqli_query($con, $sql)) {
throw new Exception(mysqli_error($con));
}
将根据站点范围的错误处理设置正确处理,并提供无价的跟踪日志。