簡體   English   中英

PHP更優雅的方式來處理mysqli錯誤

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM