CakeFest 2024: The Official CakePHP Conference

mysqli_driver::$report_mode

mysqli_report

(PHP 5, PHP 7, PHP 8)

mysqli_driver::$report_mode -- mysqli_reportLegt den Modus für die mysqli-Fehlermeldungen fest

Beschreibung

Objektorientierter Stil

Prozeduraler Stil

In Abhängigkeit von den Flags wird der Modus für mysqli-Fehlermeldungen auf Exception, Warning oder None gesetzt. Wenn der Parameter auf MYSQLI_REPORT_ALL oder MYSQLI_REPORT_INDEX gesetzt ist, informiert er auch über Abfragen, die keinen (oder einen fehlerhaften) Index verwenden.

Seit PHP 8.1.0 ist der Standardwert MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT; vorher war es MYSQLI_REPORT_OFF.

Parameter-Liste

flags

Unterstützte Flags
Name Beschreibung
MYSQLI_REPORT_OFF Deaktiviert die Meldung von Fehlern
MYSQLI_REPORT_ERROR Fehler von mysqli-Funktionsaufrufen melden
MYSQLI_REPORT_STRICT Bei einem Fehler eine mysqli_sql_exception statt einer Warnung auslösen
MYSQLI_REPORT_INDEX Fehlende oder fehlerhafte Indizes in einer Abfrage melden
MYSQLI_REPORT_ALL Alle Optionen aktivieren (alles melden)

Rückgabewerte

Returns true.

Changelog

Version Beschreibung
8.1.0 Der Standardwert ist nun MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT; vorher war es MYSQLI_REPORT_OFF.

Beispiele

Beispiel #1 Objektorientierter Stil

<?php

/* Fehlermeldungen aktivieren */
$driver = new mysqli_driver();
$driver->report_mode = MYSQLI_REPORT_ALL;

try {
/* wenn die Verbindung fehlschlägt, wird eine mysqli_sql_exception ausgelöst */
$mysqli = new mysqli("localhost", "my_user", "my_password", "my_db");

/* diese Abfrage sollte einen Fehler melden */
$result = $mysqli->query("SELECT Name FROM Nonexistingtable WHERE population > 50000");

/* Wenn die Spalte population keinen Index hat, sollte diese Abfrage einen fehlerhaften Index melden */
$result = $mysqli->query("SELECT Name FROM City WHERE population > 50000");
} catch (
mysqli_sql_exception $e) {
error_log($e->__toString());
}

Beispiel #2 Prozeduraler Stil

<?php

/* Fehlermeldungen aktivieren */
mysqli_report(MYSQLI_REPORT_ALL);

try {
/* wenn die Verbindung fehlschlägt, wird eine mysqli_sql_exception ausgelöst */
$link = mysqli_connect("localhost", "my_user", "my_password", "my_db");

/* diese Abfrage sollte einen Fehler melden */
$result = mysqli_query($link, "SELECT Name FROM Nonexistingtable WHERE population > 50000");

/* Wenn die Spalte population keinen Index hat, sollte diese Abfrage einen fehlerhaften Index melden */
$result = mysqli_query($link, "SELECT Name FROM City WHERE population > 50000");
} catch (
mysqli_sql_exception $e) {
error_log($e->__toString());
}

Beispiel #3 Nur Fehler melden, die sich nicht auf den Index beziehen

<?php

/* Fehlermeldungen aktivieren */
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

try {
/* wenn die Verbindung fehlschlägt, wird eine mysqli_sql_exception ausgelöst */
$mysqli = new mysqli("localhost", "my_user", "my_password", "my_db");

/* diese Abfrage sollte einen Fehler melden */
$result = $mysqli->query("SELECT Name FROM Nonexistingtable WHERE population > 50000");

/* diese Abfrage meldet KEINEN Fehler, auch wenn kein Index vorhanden ist */
$result = $mysqli->query("SELECT Name FROM City WHERE population > 50000");
} catch (
mysqli_sql_exception $e) {
error_log($e->__toString());
}

Siehe auch

add a note

User Contributed Notes 2 notes

up
6
nineoclick (atsymbol) gmail (dot) com
6 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
-3
welfordmartin at gmail dot com
3 years 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