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 错误”,而是称为“用户输入验证”。
其次,我根本不会以这种方式进行这样的验证。

我一直认为,通常使用 SELECT 查询而不是 INSERT 查询针对数据库验证用户输入。
它不仅可以使您的应用程序无错误,还可以使其更加灵活,例如允许对基于 AJAX 的注册进行单独验证。

至于真正的 mysqli 错误 - 你真的必须处理它们,而不仅仅是死。
最方便但最简单的方法是抛出异常:

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

这将根据站点范围的错误处理设置进行适当的处​​理,并提供无价的跟踪日志。

于 2013-02-10T16:24:43.470 回答