Signatur
Beschreibung
mysqli_connect_error() gibt die Fehlermeldung zurück, die beim zuletzt fehlgeschlagenen Verbindungsversuch über mysqli_connect() bzw. new mysqli() entstanden ist. Die Funktion ist prozedural und erfordert kein gültiges Verbindungsobjekt – sie ist daher besonders nützlich, wenn die Verbindung selbst nicht hergestellt werden konnte und kein Objekt vorliegt, von dem man den Fehler abrufen könnte.
Im Gegensatz zu mysqli_error(), das einen Fehler einer bestehenden Verbindung beschreibt, bezieht sich mysqli_connect_error() ausschließlich auf den Verbindungsaufbau. Gibt es keinen Fehler, liefert sie null zurück. Den dazugehörigen numerischen Fehlercode erhält man über mysqli_connect_errno().
Typischerweise wird mysqli_connect_error() direkt nach einem fehlgeschlagenen Verbindungsversuch eingesetzt, um aussagekräftige Fehlermeldungen zu protokollieren oder dem Entwickler anzuzeigen – ohne sensible Details an den Endnutzer weiterzugeben.
Rückgabewert
string zurück. Wenn kein Fehler aufgetreten ist, wird null zurückgegeben.Beispiele
Verbindungsfehler abfangen und ausgeben
<?php
$conn = mysqli_connect('localhost', 'root', 'falsches_passwort', 'testdb');
if (!$conn) {
// Fehlermeldung nur im Entwicklungsumfeld ausgeben
error_log('Datenbankverbindung fehlgeschlagen: ' . mysqli_connect_error());
die('Verbindung zur Datenbank konnte nicht hergestellt werden.');
}
echo 'Erfolgreich verbunden!';
OOP-Stil: Fehlerbehandlung mit new mysqli()
<?php
$conn = @new mysqli('localhost', 'root', 'falsches_passwort', 'testdb');
if (mysqli_connect_errno()) {
printf(
'Verbindungsfehler (%d): %s',
mysqli_connect_errno(),
mysqli_connect_error()
);
exit;
}
echo 'Verbindung erfolgreich hergestellt.';
// Wichtig · Fallstricke
Sicherheitshinweis: Geben Sie die Rückgabe von mysqli_connect_error() niemals direkt an den Endnutzer aus. Fehlermeldungen können Hostnamen, Benutzernamen und Datenbankstrukturen offenbaren, die für Angreifer nützlich sein könnten. Verwenden Sie stattdessen error_log() zum Protokollieren und zeigen Sie dem Nutzer nur eine generische Meldung.
Ab PHP 8.1.0 löst mysqli_connect() bei einem Fehler standardmäßig eine mysqli_sql_exception aus, sofern mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT) gesetzt ist (was seit PHP 8.1 die Voreinstellung ist). In diesem Fall ist mysqli_connect_error() oft nur noch für ältere Codebasen oder bei deaktiviertem Fehler-Reporting relevant.