©
本文档使用 PHP中文网手册 发布
(PHP 5)
The mysqli exception handling class.
The sql state with the error.
[#1] fibrizo dot raziel at gmail dot com [2015-11-02 15:34:07]
<?php mysqli_report(MYSQLI_REPORT_STRICT) ?>
was not enough for me to enable exception throwing. I had to write this:
<?php mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); ?>
[#2] callforeach at gmail dot com [2015-06-06 11:54:43]
You need to be careful when using MYSQLI_REPORT_ALL, if the exceptions are not handled properly, end users may use it a tool to aid them in implementing sql injection.
[#3] callforeach at gmail dot com [2015-03-10 13:42:53]
Please note that MYSQLI_REPORT_STRICT does not allow certain exceptions to be trapped. I find MYSQLI_REPORT_ALL to be more friendly since it allows me to trap all errors and handle them appropriately.
[#4] polyanin at gmail dot com [2014-02-18 18:51:20]
$driver = new mysqli_driver();
$driver->report_mode = MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT;
[#5] dronebraindeveloper at gmail dot com [2013-01-01 01:37:35]
Quick note on how to setup and use mysqli_sql_exceptions properly
<?php
define("MYSQL_CONN_ERROR", "Unable to connect to database.");
// Ensure reporting is setup correctly
mysqli_report(MYSQLI_REPORT_STRICT);
// Connect function for database access
function connect($usr,$pw,$db,$host) {
try {
$mysqli = new mysqli($host,$usr,$pw,$db);
$connected = true;
} catch (mysqli_sql_exception $e) {
throw $e;
}
}
try {
connect('username','password','database','host');
echo 'Connected to database';
} catch (Exception $e) {
echo $e->errorMessage();
}
?>