• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • mysqli_driver::$report_mode()

    (PHP 5, PHP 7)

    Enables or disables internal report functions

    说明

    面向对象风格
    int $mysqli_driver->report_mode;
    过程化风格
    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
    NameDescription
    MYSQLI_REPORT_OFFTurns reporting off
    MYSQLI_REPORT_ERRORReport errors from mysqli function calls
    MYSQLI_REPORT_STRICT Throw mysqli_sql_exception for errors instead of warnings
    MYSQLI_REPORT_INDEXReport if no index or bad index was used in a query
    MYSQLI_REPORT_ALLSet all options(report all)

    返回值

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

    更新日志

    版本说明
    5.3.4 Changing the reporting mode is now be per-request, rather than per-process.
    5.2.15 Changing the reporting mode is now be per-request, rather than per-process.

    范例

    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);
    ?>
    

    参见

    • mysqli_debug() Performs debugging operations
    • mysqli_dump_debug_info() 将调试信息输出到日志
    • mysqli_sql_exception
    • set_exception_handler()设置用户自定义的异常处理函数
    • error_reporting()设置应该报告何种 PHP 错误
    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;
    ?>