【发布时间】:2011-02-25 07:16:24
【问题描述】:
是否可以指定 MySQLi 向 PHP 默认的“error_log”指令发送任何错误和警告?我似乎找不到类规范的任何错误选项,我不希望像这样手动处理错误:
if ($result = $mysqli->query("...")) { }
else
handle $mysqli->error;
【问题讨论】:
标签: php error-handling mysqli error-log
是否可以指定 MySQLi 向 PHP 默认的“error_log”指令发送任何错误和警告?我似乎找不到类规范的任何错误选项,我不希望像这样手动处理错误:
if ($result = $mysqli->query("...")) { }
else
handle $mysqli->error;
【问题讨论】:
标签: php error-handling mysqli error-log
当然,这是可能的。您所要做的就是启用自动错误报告并告诉 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 错误,所有错误都会记录到文件中。
【讨论】:
嗯,一种方法是覆盖类:
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 添加额外的功能......
【讨论】: