(PHP 5)
mysqli_report — 开启或禁用(Mysql)内部(错误)报告函数
$flags
)mysqli_report()在开发和测试阶段对于你的查询和代码测试的提升方面是一个非常有用的函数。 它依赖flags参数报告从mysqli函数调用或没有使用索引(或使用了坏的索引)的查询引发的错误。
flags
名称 | 描述 |
---|---|
MYSQLI_REPORT_OFF |
关闭错误报告 |
MYSQLI_REPORT_ERROR |
报告mysqli函数调用中的错误 |
MYSQLI_REPORT_STRICT |
以抛出异常mysqli_sql_exception的方式替换警告错误。 |
MYSQLI_REPORT_INDEX |
如果一个查询没有索引或使用了错误的索引则报告错误 |
MYSQLI_REPORT_ALL |
设置所有选项(报告所有) |
成功时返回 TRUE
, 或者在失败时返回 FALSE
。
版本 | 说明 |
---|---|
5.2.15 & 5.3.4 | 修改了报告模式,现在是每个请求,而不是每个进程。 |
面向对象风格
<?php
/* 激活错误报告 */
mysqli_report(MYSQLI_REPORT_ALL);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* 检查连接 */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* 这个查询会报告一个错误 */
$result = $mysqli->query("SELECT Name FROM Nonexistingtable WHERE population > 50000");
/* 这个查询会报告一个坏的索引 */
$result = $mysqli->query("SELECT Name FROM City WHERE population > 50000");
$result->close();
$mysqli->close();
?>
Thomas (2012-08-13 17:47:58)
Please note that mysqli_report is NOT deprecated (see https://bugs.php.net/bug.php?id=55329).
grepmaster (2009-03-22 17:51:00)
Hint: If you use
mysqli_report(MYSQLI_REPORT_ALL ^ MYSQLI_REPORT_STRICT)
normal errors are generated instead of exceptions.
Polarina (2007-11-10 15:08:28)
It should be noted that all reports made by this function, are sent through an exception named 'mysqli_sql_exception' instead of a normal PHP warning.
anthony dot parsons at manx dot net (2005-11-05 19:23:04)
Be very careful using this function - it's a per-process setting.
If your server is set up to reuse a single PHP process for multiple requests, that means the last setting of this function in any script will affect all other scripts using mysqli.
To be safe always call <? mysqli_report(MYSQLI_REPORT_OFF) ?> at the end of a script. The CGI version of PHP is probably safe from this.
(Tested using PHP 5.0.5, Apache 2 SAPI module)