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;
?>
(PHP 5, PHP 7, PHP 8)
mysqli_driver::$report_mode -- mysqli_report — mysqli のエラー報告モードを設定する
オブジェクト指向型
手続き型
フラグに応じて、mysqli のエラー報告モードを設定します。
例外をスローするモードや、警告を発生させるモード、エラーを報告しないモードを設定できます。
MYSQLI_REPORT_ALL
や
MYSQLI_REPORT_INDEX
に設定すると、
インデックスを使わない(または、インデックスの使い方が良くない) クエリも報告します。
PHP 8.1.0 以降では、デフォルトの設定は
MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT
です。
それより前のバージョンでは、MYSQLI_REPORT_OFF
でした。
flags
名前 | 説明 |
---|---|
MYSQLI_REPORT_OFF |
レポートをオフにする |
MYSQLI_REPORT_ERROR |
mysqli の関数呼び出しからのエラーを報告する |
MYSQLI_REPORT_STRICT |
警告の代わりに mysqli_sql_exception をスローする |
MYSQLI_REPORT_INDEX |
クエリでインデックスを使っていない (あるいは不適切なインデックスを使っている) 場合にレポートする |
MYSQLI_REPORT_ALL |
すべてのオプションを設定する (すべてレポートする) |
true
を返します。
バージョン | 説明 |
---|---|
8.1.0 |
デフォルト値が
MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT
になりました。
これより前のバージョンでは、
MYSQLI_REPORT_OFF
でした。
|
例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 {
/* 接続が失敗すると, mysqli_sql_exception がスローされます。*/
$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 インデックスに関するエラー以外を全て報告する
<?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());
}
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;
?>
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.