1

以下に示すように、(フレームワークではなく) 純粋な 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));
            }
    }
4

1 に答える 1

0

まず第一に、そのようなプロセスを「mysqli エラーの処理」とは呼びませんが、「ユーザー入力の検証」と呼びます。
そして第二に、私はこのような検証をまったく実行しません。

データベースに対するユーザー入力の検証は、通常、INSERT クエリではなく SELECT クエリを使用して実行されるという印象を受けてきました。
アプリケーションをエラーから解放するだけでなく、アプリケーションをより柔軟にし、たとえば AJAX ベースの登録を個別に検証できるようにします。

実際の mysqli エラーについては、単に死ぬのではなく、実際に処理する必要があります。
最も便利で簡単な方法は、例外をスローすることです。

if (!mysqli_query($con, $sql)) {
    throw new Exception(mysqli_error($con));
}

これは、サイト全体のエラー処理設定に従って適切に処理され、貴重なトレース ログも提供します。

于 2013-02-10T16:24:43.470 に答える