W3docs

error_list

Erklärung der mysqli_error_list()-Funktion in PHP zum Abrufen aller Fehler des letzten MySQLi-Aufrufs mit errno, sqlstate und Fehlermeldung.

Die Funktion mysqli_error_list() gibt ein array der Fehler zurück, die beim letzten MySQLi-Funktionsaufruf auf einer bestimmten Verbindung aufgetreten sind. Im Gegensatz zu mysqli_error(), das nur die letzte Fehlermeldung als string liefert, gibt mysqli_error_list() alle Fehler dieser Operation zurück — jeden als assoziatives array mit der Fehlernummer, dem SQLSTATE-Code und der lesbaren Fehlermeldung. Diese Seite erläutert die Syntax, den Aufbau der zurückgegebenen Daten und die praktische Verwendung.

Syntax

mysqli_error_list(mysqli $mysql): array

Der objektorientierte Stil verwendet stattdessen die schreibgeschützte Eigenschaft error_list:

$mysqli->error_list;

Parameter

  • $mysql — Ein MySQLi-Verbindungsobjekt, das von mysqli_connect() (oder mysqli_init() / new mysqli()) zurückgegeben wird.

Rückgabewert

Ein array aus assoziativen arrays. Das array ist leer, wenn kein Fehler aufgetreten ist. Jeder Eintrag enthält drei Schlüssel:

SchlüsselTypBeschreibung
errnointDie MySQL-Fehlernummer (z. B. 1146 für „Tabelle existiert nicht").
sqlstatestringDer fünfstellige SQLSTATE-Fehlercode (z. B. 42S02).
errorstringDer Fehlermeldungstext.

Einfaches Beispiel

mysqli_error_list() wird direkt nach der zu prüfenden Operation aufgerufen — typischerweise dann, wenn eine Abfrage fehlgeschlagen ist:

<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");

$query = "SELECT * FROM my_table";
$result = mysqli_query($mysqli, $query);

if (!$result) {
    $error_list = mysqli_error_list($mysqli);
    foreach ($error_list as $error) {
        echo "Failed to execute query. Error message: " . $error['error'] . "\n";
    }
    exit();
}

mysqli_close($mysqli);
?>

Hier wird eine Verbindung hergestellt, eine Abfrage ausgeführt und das Ergebnis geprüft. Gibt mysqli_query() den Wert false zurück, wird mysqli_error_list() aufgerufen und über das zurückgegebene array iteriert, wobei die error-Meldung jedes Fehlers ausgegeben wird, bevor das Skript beendet wird. Ist die Abfrage erfolgreich, läuft die Schleife schlicht nicht, da das array leer ist.

Fehlercode und SQLSTATE auslesen

Da jeder Eintrag ein assoziatives array ist, können neben der Meldung auch der numerische Code und der SQLSTATE ausgelesen werden — nützlich, um auf bestimmte Fehler zu verzweigen, statt den Meldungstext zu parsen:

<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");

$query = "SELECT * FROM my_table";
$result = mysqli_query($mysqli, $query);

if (!$result) {
    $error_list = mysqli_error_list($mysqli);
    foreach ($error_list as $error) {
        echo "Failed to execute query. Error message: " . $error['error'] . "\n";
        echo "Error code: " . $error['errno'] . "\n";
        echo "SQLSTATE error code: " . $error['sqlstate'] . "\n";
    }
    exit();
}

mysqli_close($mysqli);
?>

Dieses Beispiel erweitert das einfache Beispiel, indem für jeden Fehler die numerische errno und der sqlstate-Code ausgegeben werden, was den vollständigen Diagnosekontext liefert.

Objektorientierter Stil

Wenn die Verbindung mit new mysqli() erstellt wird, ist die Eigenschaft error_list zu verwenden:

<?php
$mysqli = new mysqli("localhost", "username", "password", "database");

if (!$mysqli->query("SELECT * FROM missing_table")) {
    foreach ($mysqli->error_list as $error) {
        echo "[{$error['errno']}] {$error['sqlstate']}: {$error['error']}\n";
    }
}

$mysqli->close();
?>

mysqli_error_list() vs. verwandte Funktionen

  • mysqli_error() — gibt nur die letzte Fehlermeldung als string zurück. Verwenden Sie diese Funktion, wenn nur eine einzige Meldung benötigt wird.
  • mysqli_errno() — gibt die Fehlernummer des letzten Aufrufs zurück.
  • mysqli_error_list() — gibt alle Fehler des letzten Aufrufs zurück, jeweils mit errno, sqlstate und error. Verwenden Sie diese Funktion, wenn eine einzige Operation mehrere Probleme aufdecken kann.

Fallstricke

  • Die Liste spiegelt nur den letzten MySQLi-Aufruf auf dieser Verbindung wider. Erfassen Sie sie unmittelbar nach der fehlgeschlagenen Operation — ein anschließend erfolgreicher Aufruf löscht sie.
  • Eine erfolgreiche Operation gibt ein leeres array zurück, nicht false oder null. Prüfen Sie daher mit if (!$result) (oder mit mysqli_errno()), bevor Sie davon ausgehen, dass Fehler vorhanden sind.
  • Bei Verbindungsfehlern schlägt der Verbindungsschritt selbst fehl, bevor ein nutzbares Objekt vorhanden ist — verwenden Sie dort stattdessen mysqli_connect_error().

Fazit

mysqli_error_list() bietet strukturierten Zugriff auf alle Fehler der letzten MySQLi-Operation, vollständig mit Fehlernummer, SQLSTATE und Meldung. Greifen Sie darauf zurück, wenn Sie reichhaltigere Diagnoseinformationen benötigen, als mysqli_error() liefert. Zur weiterführenden PHP-Fehlerbehandlung lesen Sie PHP-Fehlerbehandlung und die mysqli-Übersicht.

Übung

Übung
Welche der folgenden Optionen sind Fehlertypen in PHP?
Welche der folgenden Optionen sind Fehlertypen in PHP?
Was this page helpful?