Signatur
Beschreibung
mysqli_connect_errno() liefert den numerischen Fehlercode, der beim letzten Verbindungsversuch mit einem MySQL-Server über mysqli_connect() aufgetreten ist. Ist die Verbindung erfolgreich, gibt die Funktion 0 zurück.
Die Funktion ist besonders nützlich, um unmittelbar nach einem Verbindungsaufbau zu prüfen, ob ein Fehler aufgetreten ist, ohne ein gültiges mysqli-Objekt zu benötigen – denn bei einem fehlgeschlagenen Verbindungsaufbau existiert ja noch kein Verbindungs-Objekt, dessen Methoden man aufrufen könnte.
In Kombination mit mysqli_connect_error(), das den Fehlertext zurückgibt, lässt sich eine aussagekräftige Fehlermeldung erzeugen und z. B. in einer Log-Datei speichern. Die Fehlercodes entsprechen den standardisierten MySQL-Fehlercodes.
Ab PHP 8.1.0 wirft mysqli_connect() im Fehlerfall standardmäßig eine mysqli_sql_exception, sodass mysqli_connect_errno() in modernem Code seltener direkt benötigt wird, aber für Legacy-Code und für Umgebungen mit deaktiviertem Exception-Modus weiterhin relevant bleibt.
Rückgabewert
0 zurückgegeben.Beispiele
Verbindungsfehler abfangen und behandeln
<?php
$conn = @mysqli_connect('localhost', 'user', 'wrongpassword', 'mydb');
if (mysqli_connect_errno()) {
echo 'Verbindung fehlgeschlagen.' . PHP_EOL;
echo 'Fehlercode: ' . mysqli_connect_errno() . PHP_EOL;
echo 'Fehlermeldung: ' . mysqli_connect_error() . PHP_EOL;
exit(1);
}
echo 'Verbindung erfolgreich.';
?>
Fehlercode in Logdatei schreiben
<?php
$conn = @mysqli_connect('db.example.com', 'appuser', 'secret', 'appdb', 3306);
$errno = mysqli_connect_errno();
if ($errno !== 0) {
$logMessage = sprintf(
'[%s] MySQL-Verbindungsfehler #%d: %s',
date('Y-m-d H:i:s'),
$errno,
mysqli_connect_error()
);
error_log($logMessage, 3, '/var/log/app/db_errors.log');
// Dem Nutzer eine neutrale Fehlermeldung zeigen
die('Datenbankverbindung nicht möglich. Bitte versuchen Sie es später erneut.');
}
// Ab hier ist $conn gültig
mysqli_close($conn);
?>
// Wichtig · Fallstricke
Sicherheitshinweis: Geben Sie den Rückgabewert von mysqli_connect_errno() oder mysqli_connect_error() niemals direkt an den Endnutzer aus. Die Fehlermeldungen können Informationen über die Datenbankstruktur, Hostnamen oder Benutzernamen enthalten, die für Angreifer nützlich sein könnten. Schreiben Sie Fehler stattdessen in eine Log-Datei.
Ab PHP 8.1: Standardmäßig ist der mysqli-Fehlerberichtsmodus auf MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT gesetzt, wodurch Verbindungsfehler automatisch eine mysqli_sql_exception werfen. In diesem Modus ist eine manuelle Prüfung via mysqli_connect_errno() nicht mehr notwendig; stattdessen sollte try/catch verwendet werden.
Das vorangestellte @ beim mysqli_connect()-Aufruf unterdrückt PHP-Warnungen und kann hilfreich sein, wenn die Fehlerbehandlung vollständig manuell erfolgt.