The PHP Online Conference 2021

mysqli_driver::$report_mode

mysqli_report

(PHP 5, PHP 7)

mysqli_driver::$report_mode -- mysqli_reportEnables or disables internal report functions

说明

面向对象风格

过程化风格

mysqli_report ( int $flags ) : bool

A function helpful in improving queries during code development and testing. Depending on the flags, it reports errors from mysqli function calls or queries that don't use an index (or use a bad index).

参数

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)

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

范例

Example #1 面向对象风格

<?php

$mysqli 
= new mysqli("localhost""my_user""my_password""world");

/* check connection */
if (mysqli_connect_errno()) {
    
printf("Connect failed: %s\n"mysqli_connect_error());
    exit();
}

/* activate reporting */
$driver = new mysqli_driver();
$driver->report_mode MYSQLI_REPORT_ALL;

try {

    
/* 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();

} catch (
mysqli_sql_exception $e) {

    echo 
$e->__toString();
}
?>

Example #2 过程化风格

<?php
/* activate reporting */
mysqli_report(MYSQLI_REPORT_ALL);

$link mysqli_connect("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");

mysqli_free_result($result);

mysqli_close($link);
?>

参见

add a note add a note

User Contributed Notes 2 notes

up
4
nineoclick (atsymbol) gmail (dot) com
3 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;

?>
up
-1
welfordmartin at gmail dot com
1 month 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.
To Top