mysqli_driver::$report_mode
mysqli_report
(PHP 5, PHP 7, PHP 8)
mysqli_driver::$report_mode -- mysqli_report — Sets mysqli error reporting mode
说明
面向对象风格
过程化风格
Depending on the flags, it sets mysqli error reporting mode to exception, warning or none.
When set to MYSQLI_REPORT_ALL
or MYSQLI_REPORT_INDEX
it will also inform about queries that don't use an index (or use a bad index).
As of PHP 8.1.0, the default setting is MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT
.
Previously, it was MYSQLI_REPORT_OFF
.
参数
-
flags
-
Supported flags Name Description MYSQLI_REPORT_OFF
Turns reporting off MYSQLI_REPORT_ERROR
Report errors from mysqli function calls MYSQLI_REPORT_STRICT
Throw mysqli_sql_exception for errors instead of warnings MYSQLI_REPORT_INDEX
Report if no index or bad index was used in a query MYSQLI_REPORT_ALL
Set all options (report all)
返回值
Returns true
.
更新日志
版本 | 说明 |
---|---|
8.1.0 |
The default value is now MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT .
Previously, it was MYSQLI_REPORT_OFF .
|
范例
示例 #1 面向对象风格
<?php
/* activate reporting */
$driver = new mysqli_driver();
$driver->report_mode = MYSQLI_REPORT_ALL;
try {
/* if the connection fails, a mysqli_sql_exception will be thrown */
$mysqli = new mysqli("localhost", "my_user", "my_password", "my_db");
/* this query should report an error */
$result = $mysqli->query("SELECT Name FROM Nonexistingtable WHERE population > 50000");
/* this query should report a bad index if the column population doesn't have an index */
$result = $mysqli->query("SELECT Name FROM City WHERE population > 50000");
} catch (mysqli_sql_exception $e) {
error_log($e->__toString());
}
示例 #2 过程化风格
<?php
/* activate reporting */
mysqli_report(MYSQLI_REPORT_ALL);
try {
/* if the connection fails, a mysqli_sql_exception will be thrown */
$link = mysqli_connect("localhost", "my_user", "my_password", "my_db");
/* this query should report an error */
$result = mysqli_query($link, "SELECT Name FROM Nonexistingtable WHERE population > 50000");
/* this query should report a bad index if the column population doesn't have an index */
$result = mysqli_query($link, "SELECT Name FROM City WHERE population > 50000");
} catch (mysqli_sql_exception $e) {
error_log($e->__toString());
}
示例 #3 Error reporting except bad index errors
<?php
/* activate reporting */
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
try {
/* if the connection fails, a mysqli_sql_exception will be thrown */
$mysqli = new mysqli("localhost", "my_user", "my_password", "my_db");
/* this query should report an error */
$result = $mysqli->query("SELECT Name FROM Nonexistingtable WHERE population > 50000");
/* this WILL NOT report any errors even if index is not available */
$result = $mysqli->query("SELECT Name FROM City WHERE population > 50000");
} catch (mysqli_sql_exception $e) {
error_log($e->__toString());
}
参见
- mysqli_sql_exception
- set_exception_handler() - 设置用户自定义的异常处理函数
- error_reporting() - 设置应该报告何种 PHP 错误

User Contributed Notes 2 notes
nineoclick (atsymbol) gmail (dot) com ¶
5 years ago
Seems not clear but flags *could be combined*, as per other flags.
For example:
<?php
# wannabe noticed about all errors except those about indexes
$driver = new mysqli_driver();
$driver->report_mode = MYSQLI_REPORT_ALL & ~MYSQLI_REPORT_INDEX;
?>
welfordmartin at gmail dot com ¶
1 year ago
As a recommendaton on memory management please don't use the objective way your creating an object to specify one property and thats all your doing with it, much more effective both for the parser and for memory to use the proccedual style for setting the report flag.
备份地址:http://www.lvesu.com/blog/php/mysqli-driver.report-mode.php