Signatur
Beschreibung
mysqli_errno() liefert den Fehlercode des zuletzt aufgetretenen Fehlers auf einer aktiven MySQL-Verbindung. Der Rückgabewert entspricht den MySQL-internen Fehlernummern (z. B. 1045 für ungültige Zugangsdaten oder 1062 für einen Duplicate-Key-Fehler). War kein Fehler aufgetreten, wird 0 zurückgegeben.
Diese Funktion ist in der prozeduralen API von MySQLi das Äquivalent zur objektorientierten Eigenschaft $mysqli->errno. Sie eignet sich besonders für die Fehlerdiagnose direkt nach einem fehlgeschlagenen Datenbankaufruf (z. B. mysqli_query(), mysqli_connect()) und erlaubt es, gezielt auf bestimmte Fehlercodes zu reagieren.
In professionellen Anwendungen sollte mysqli_errno() in Kombination mit mysqli_error() eingesetzt werden, um neben dem Code auch eine lesbare Fehlermeldung zu erhalten. Für die strukturierte Fehlerbehandlung kann auch der Exception-Modus von MySQLi (über mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT)) bevorzugt werden.
Hinweis: Der Fehlercode bezieht sich stets auf den letzten Funktionsaufruf auf der übergebenen Verbindung. Nach einem erfolgreichen Aufruf wird der Fehlerzustand zurückgesetzt.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $mysql Pflicht | mysqli | Eine aktive MySQLi-Verbindungsressource, wie sie von mysqli_connect() oder mysqli_init() zurückgegeben wird. |
Rückgabewert
0 zurück, wenn kein Fehler aufgetreten ist.Beispiele
Fehlercode nach fehlgeschlagenem Query auswerten
<?php
$mysqli = mysqli_connect('localhost', 'user', 'password', 'testdb');
if (!$mysqli) {
echo 'Verbindung fehlgeschlagen. Fehlercode: ' . mysqli_connect_errno();
exit;
}
// Absichtlich fehlerhafter SQL-Befehl
$result = mysqli_query($mysqli, 'SELECT * FROM nicht_existente_tabelle');
if (!$result) {
$code = mysqli_errno($mysqli);
$message = mysqli_error($mysqli);
echo "MySQL-Fehler {$code}: {$message}";
}
mysqli_close($mysqli);
Gezielt auf Duplicate-Key-Fehler reagieren
<?php
$mysqli = mysqli_connect('localhost', 'user', 'password', 'testdb');
// Einfügen eines Datensatzes mit einem bereits vorhandenen Primärschlüssel
$result = mysqli_query($mysqli, "INSERT INTO users (id, name) VALUES (1, 'Max')");
if (!$result) {
$errno = mysqli_errno($mysqli);
if ($errno === 1062) {
echo 'Fehler: Dieser Datensatz existiert bereits (Duplicate Key).';
} else {
echo 'Unbekannter Datenbankfehler: ' . mysqli_error($mysqli);
}
}
mysqli_close($mysqli);
// Wichtig · Fallstricke
Sicherheitshinweis: Geben Sie Fehlercodes und -meldungen niemals direkt an den Endnutzer aus, da diese interne Datenbankstruktur offenbaren können. Loggen Sie Fehler serverseitig und zeigen Sie dem Nutzer nur generische Meldungen.
Für neue Projekte empfiehlt sich die Aktivierung des MySQLi-Exception-Modus mit mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT) vor dem Verbindungsaufbau. Dadurch werden Fehler automatisch als mysqli_sql_exception geworfen und müssen nicht mehr manuell über mysqli_errno() abgefragt werden.
Bei Verbindungsfehlern (noch vor dem Aufbau einer gültigen Verbindung) muss stattdessen mysqli_connect_errno() verwendet werden, da zu diesem Zeitpunkt kein gültiges mysqli-Objekt vorhanden ist.