PHP 7.4.22 Released!

mysqli_driver::$report_mode

mysqli_report

(PHP 5, PHP 7, PHP 8)

mysqli_driver::$report_mode -- mysqli_reportmysqli のエラー報告モードを設定する

説明

オブジェクト指向型

手続き型

mysqli_report(int $flags): bool

フラグに応じて、mysqli のエラー報告モードを設定します。 例外をスローするモードや、警告を発生させるモード、エラーを報告しないモードを設定できます。 MYSQLI_REPORT_ALLMYSQLI_REPORT_INDEX に設定すると、 インデックスを使わない(または、インデックスの使い方が良くない) クエリも報告します。

デフォルトはの設定は MYSQLI_REPORT_OFF です。

パラメータ

flags

サポートするフラグ
名前 説明
MYSQLI_REPORT_OFF レポートをオフにする(デフォルト)
MYSQLI_REPORT_ERROR mysqli の関数呼び出しからのエラーを報告する
MYSQLI_REPORT_STRICT 警告の代わりに mysqli_sql_exception をスローする
MYSQLI_REPORT_INDEX クエリでインデックスを使っていない (あるいは不適切なインデックスを使っている) 場合にレポートする
MYSQLI_REPORT_ALL すべてのオプションを設定する (すべてレポートする)

返り値

true を返します。

例1 オブジェクト指向型

<?php

/* レポートを有効にします。 */
$driver = new mysqli_driver();
$driver->report_mode MYSQLI_REPORT_ALL;

try {
    
/* 接続が失敗すると, mysqli_sql_exception がスローされます。*/
    
$mysqli = new mysqli("localhost""my_user""my_password""my_db");

    
/* このクエリは、エラーを報告するはずです。 */
    
$result $mysqli->query("SELECT Name FROM Nonexistingtable WHERE population > 50000");

    
/* このクエリは、カラムがインデックスを持っていた場合、エラーを報告するはずです。*/
    
$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 {
    
$link mysqli_connect("localhost""my_user""my_password""my_db");

    
/* このクエリは、エラーを報告するはずです。 */
    
$result mysqli_query($link"SELECT Name FROM Nonexistingtable WHERE population > 50000");

    
/* このクエリは、カラムがインデックスを持っていた場合、エラーを報告するはずです。*/
    
$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 {
    
/* 接続が失敗すると, mysqli_sql_exception がスローされます。*/
    
$mysqli = new mysqli("localhost""my_user""my_password""my_db");
    
$mysqli = new mysqli("localhost""my_user""my_password""my_db");

    
/* このクエリは、エラーを報告するはずです。 */
    
$result $mysqli->query("SELECT Name FROM Nonexistingtable WHERE population > 50000");

    
/* このクエリは、インデックスが使えなかったとしても、一切エラーを報告しません */
    
$result $mysqli->query("SELECT Name FROM City WHERE population > 50000");
} catch (
mysqli_sql_exception $e) {
    
error_log($e->__toString());
}

参考

add a note add a note

User Contributed Notes 2 notes

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