[英]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.