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");
/* этот запрос должен сообщить о неверном индексе, если у столбца population нет индекса */
$result = $mysqli->query("SELECT Name FROM City WHERE population > 50000");
} catch (mysqli_sql_exception $e) {
error_log($e->__toString());
}
Пример #2 Процедурный стиль
<?php
/* включение протоколирования */
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");
/* этот запрос должен сообщить о неверном индексе, если у столбца population нет индекса */
$result = mysqli_query($link, "SELECT Name FROM City WHERE population > 50000");
} catch (mysqli_sql_exception $e) {
error_log($e->__toString());
}
Пример #3 Отчёт об ошибках, кроме ошибок неверного индекса
<?php
/* включение протоколирования */
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
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());
}
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.