[英]PHP More elegant way to handle mysqli errors
使用纯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));
}
}
首先,我不会将这样的过程称为“处理mysqli错误”,而是“用户输入验证”。
其次,我完全不会以这种方式执行这样的验证。
我一直给人的印象是,根据数据库验证用户输入通常是使用SELECT查询而不是INSERT查询执行的。
它不仅使您的应用程序无差错,而且使它更加灵活,例如可以对基于AJAX的注册进行单独的验证。
至于真正的mysqli错误-您真的必须处理它们,而不仅仅是死亡。
最方便而又简便的方法是引发异常:
if (!mysqli_query($con, $sql)) {
throw new Exception(mysqli_error($con));
}
它将根据站点范围的错误处理设置进行正确处理,并提供无价的跟踪日志。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.