W3docs

error

In diesem Artikel wird die Funktion mysqli_error() in PHP vorgestellt, die die Fehlermeldung der letzten MySQLi-Operation zurückgibt.

In diesem Artikel befassen wir uns mit der Funktion mysqli_error() in PHP, die verwendet wird, um die Fehlermeldung des letzten MySQLi-Funktionsaufrufs abzurufen. Diese Seite beschreibt die Syntax, Parameter und den Rückgabewert der Funktion, führt durch praktische Beispiele und verweist auf verwandte Fehlerbehandlungsfunktionen.

Einführung in die Funktion mysqli_error()

Die Funktion mysqli_error() ist eine eingebaute PHP-Funktion, die einen string zurückgibt, der den Fehler der letzten MySQLi-Operation auf einer bestimmten Verbindung beschreibt. Wenn der letzte Aufruf erfolgreich war — oder noch keine Operation ausgeführt wurde — gibt sie einen leeren string ("") zurück.

Sie wird benötigt, weil die meisten MySQLi-Funktionen (wie mysqli_query()) einen Fehler nur durch die Rückgabe von false signalisieren. Das zeigt an, dass etwas schiefgelaufen ist, aber nicht was. mysqli_error() schließt diese Lücke, indem sie die vom MySQL-Server gemeldete, für Menschen lesbare Meldung zurückgibt, zum Beispiel Table 'database.my_table' doesn't exist.

Syntax

mysqli_error(mysqli $mysqli): string

Parameter

  • $mysqli (erforderlich) — Ein MySQLi-Verbindungsobjekt, das von mysqli_connect() (oder mysqli_init() + mysqli_real_connect()) zurückgegeben wird. Der gemeldete Fehler gehört zu dieser bestimmten Verbindung.

Rückgabewert

Ein string mit der Fehlerbeschreibung der letzten Operation auf $mysqli. Ein leerer string bedeutet, dass kein Fehler aufgetreten ist. Da ein leerer string in PHP „falsy" ist, verzweigt man typischerweise auf das Ergebnis des fehlgeschlagenen Aufrufs (z. B. !$result) und nicht auf mysqli_error() selbst.

Objekt- vs. prozeduraler Stil. Diese Seite verwendet den prozeduralen Stil mysqli_error($mysqli). Bei der objektorientierten API ist das Äquivalent die schreibgeschützte Eigenschaft $mysqli->error.

Verwendung der Funktion mysqli_error()

Die Verwendung der Funktion mysqli_error() ist unkompliziert. Sie rufen sie auf einem gültigen MySQLi-Verbindungsobjekt auf. Hier ist ein Beispiel:

Wie verwendet man die Funktion mysqli_error()?

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

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

if (!$result) {
    $error_msg = mysqli_error($mysqli);
    echo "Failed to execute query. Error message: " . $error_msg;
    exit();
}

mysqli_close($mysqli);
?>

In diesem Beispiel rufen wir die Funktion mysqli_connect() auf, um eine Verbindung zu einer MySQL-Datenbank herzustellen. Anschließend führen wir eine Abfrage mit der Funktion mysqli_query() aus und speichern das Ergebnis in einer Variablen. Wir prüfen mithilfe der Bedingung !$result, ob ein Fehler in der Abfrage aufgetreten ist. Falls ein Fehler vorlag, übergeben wir das Verbindungsobjekt an mysqli_error(), um die spezifische Fehlermeldung abzurufen, sie anzuzeigen und das Skript zu beenden.

Hinweis: Vergewissern Sie sich immer, dass mysqli_connect() ein gültiges object zurückgibt, bevor Sie Abfragen ausführen. Falls die Verbindung fehlschlägt, löst mysqli_query() eine PHP-Warnung aus.

Erweiterte Verwendung

Die Funktion mysqli_error() kann auch über mehrere Verbindungen hinweg eingesetzt werden. Hier ist ein Beispiel:

Erweiterte Verwendung von PHP mysqli_error()

<?php
$mysqli1 = mysqli_connect("localhost", "username", "password", "database1");
$mysqli2 = mysqli_connect("localhost", "username", "password", "database2");

$query = "SELECT * FROM my_table";
$result1 = mysqli_query($mysqli1, $query);
$result2 = mysqli_query($mysqli2, $query);

if (!$result1) {
    $error_msg = mysqli_error($mysqli1);
    echo "Failed to execute query on connection 1. Error message: " . $error_msg;
    exit();
}

if (!$result2) {
    $error_msg = mysqli_error($mysqli2);
    echo "Failed to execute query on connection 2. Error message: " . $error_msg;
    exit();
}

mysqli_close($mysqli1);
mysqli_close($mysqli2);
?>

In diesem Beispiel stellen wir zwei separate Verbindungen her und führen auf jeder dieselbe Abfrage aus. Wir prüfen das Ergebnis jeder Verbindung unabhängig voneinander. Wenn eine Abfrage fehlschlägt, übergeben wir das entsprechende Verbindungsobjekt an mysqli_error(), um den spezifischen Fehler zu isolieren und anzuzeigen. Dies ist wichtig, weil mysqli_error() verbindungsbezogen ist — ein Aufruf auf $mysqli1 meldet niemals einen Fehler, der auf $mysqli2 aufgetreten ist.

Moderne Fehlerbehandlung mit Exceptions

Bei neueren PHP-Anwendungen empfiehlt es sich, stattdessen die ausnahmebasierte Fehlerbehandlung zu aktivieren, anstatt nach jedem Aufruf mysqli_error() zu prüfen. Fügen Sie diese Zeile hinzu, bevor Sie die Verbindung aufbauen:

<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

try {
    $mysqli = mysqli_connect("localhost", "username", "password", "database");
    $result = mysqli_query($mysqli, "SELECT * FROM my_table");
} catch (mysqli_sql_exception $e) {
    echo "Database error: " . $e->getMessage();
}
?>

Wenn MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT gesetzt ist, wirft eine fehlgeschlagene Verbindung oder Abfrage automatisch ein mysqli_sql_exception-object, anstatt false zurückzugeben. Die gleiche Meldung, die Sie sonst aus mysqli_error() lesen würden, ist über $e->getMessage() verfügbar. Ab PHP 8.1 ist dieser Berichtsmodus der Standard, sodass moderner Code sich auf try/catch statt auf manuelle Prüfungen stützt.

Häufige Fallstricke

  • Übergabe der falschen Verbindung. mysqli_error() meldet Fehler für die übergebene Verbindung. Übergeben Sie dasselbe $mysqli, das Sie für die fehlgeschlagene Abfrage verwendet haben.
  • Aufruf nach mysqli_close(). Sobald eine Verbindung geschlossen ist, ist das object nicht mehr gültig und Sie können dessen Fehler nicht mehr auslesen.
  • Verbindungsfehler. Wenn mysqli_connect() selbst fehlschlägt, gibt sie false zurück (oder wirft im strikten Modus eine Exception). Verwenden Sie mysqli_connect_error() für Fehler beim Verbindungsaufbau — mysqli_error() ist für Fehler nach einer erfolgreichen Verbindung.

Fazit

Die Funktion mysqli_error() ist ein praktisches Werkzeug zum Debuggen und Behandeln von MySQLi-Fehlern. Durch das Überprüfen der Verbindungsgültigkeit und das Verständnis, wie spezifische Fehlermeldungen abgerufen werden, können Sie robustere Datenbankinteraktionen aufbauen.

Verwandte Funktionen

Übungen

Übung
Welche Möglichkeiten gibt es, Fehler in PHP zu behandeln?
Welche Möglichkeiten gibt es, Fehler in PHP zu behandeln?
Was this page helpful?