MySQLi 错误处理

发布于 2024-09-03 01:18:27 字数 193 浏览 8 评论 0原文

是否可以指定 MySQLi 将任何错误和警告发送到 PHP 默认的“error_log”指令?我似乎找不到类规范的任何错误选项,并且我不希望像这样手动处理错误:

if ($result = $mysqli->query("...")) {  }
else
    handle $mysqli->error;

Is it possible to specify that MySQLi sends any errors and warnings to the PHP default 'error_log' directive? I can't seem to find any error options for the class specification, and I don't wish to handle errors manually like so:

if ($result = $mysqli->query("...")) {  }
else
    handle $mysqli->error;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

归途 2024-09-10 01:18:27

好吧,一种方法是重写该类:

class myMySQLi extends MySQLi {

    public function query($query, $resultmode = MYSQLI_STORE_RESULT) {
        $res = parent::query($query, $resultmode);
        if (!$res) {
            //handle error
        }
        return $res;
    }
}

然后照常使用,只不过不是通过 new MySQLi() 创建连接,而是使用 new myMySQLi() 。除了错误处理之外,它的运行方式是一样的。我经常这样做,抛出错误异常并向 MySQLi 添加附加功能......

Well, one way would be to override the class:

class myMySQLi extends MySQLi {

    public function query($query, $resultmode = MYSQLI_STORE_RESULT) {
        $res = parent::query($query, $resultmode);
        if (!$res) {
            //handle error
        }
        return $res;
    }
}

Then just use as normal, except instead of creating an connection via new MySQLi(), use new myMySQLi(). Other than the error handling, it'll run just the same. I do this quite often, to throw exceptions on errors and to add additional functionality to MySQLi...

烧了回忆取暖 2024-09-10 01:18:27

当然,这是可能的。您所要做的就是启用自动错误报告并告诉 PHP 将所有错误记录到文件中。

在使用 mysqli 打开连接之前,您应该确保启用了这两个设置:

ini_set("log_errors", 1); // this can be set in INI file too, together with error_log path
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

$mysqli = new mysqli('localhost', /** ... */);

您不再需要手动检查 mysqli 错误,所有错误都将记录到文件中。

Of course, it is possible. All you have to do is enable automatic error reporting and tell PHP to log all errors into a file.

Before you open a connection using mysqli you should ensure that you have these two settings enabled:

ini_set("log_errors", 1); // this can be set in INI file too, together with error_log path
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

$mysqli = new mysqli('localhost', /** ... */);

You don't need to check for mysqli errors manually anymore and all errors will be logged to a file.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文