Regarding Anthony's comment:
Since 5.2.15 the report mode is per request, not per process anymore.
http://php.net/manual/en/mysqli-driver.report-mode.php#refsect1-mysqli-driver.report-mode-changelog
(PHP 5)
mysqli_report — Enables or disables internal report functions
$flags
)mysqli_report() is a powerful function to improve your queries and code during development and testing phase. Depending on the flags it reports errors from mysqli function calls or queries which don't use an index (or use a bad index).
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
on success or FALSE
on failure.
Version | Beskrivelser |
---|---|
5.2.15 & 5.3.4 | Changing the reporting mode is now be per-request, rather than per-process. |
Eksempel #1 Object oriented style
<?php
/* activate reporting */
mysqli_report(MYSQLI_REPORT_ALL);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* this query should report an error */
$result = $mysqli->query("SELECT Name FROM Nonexistingtable WHERE population > 50000");
/* this query should report a bad index */
$result = $mysqli->query("SELECT Name FROM City WHERE population > 50000");
$result->close();
$mysqli->close();
?>
Regarding Anthony's comment:
Since 5.2.15 the report mode is per request, not per process anymore.
http://php.net/manual/en/mysqli-driver.report-mode.php#refsect1-mysqli-driver.report-mode-changelog
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.
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)
Hint: If you use
mysqli_report(MYSQLI_REPORT_ALL ^ MYSQLI_REPORT_STRICT)
normal errors are generated instead of exceptions.