Start · Sprachen · PHP · Referenz · mysqli_connect_error

mysqli_connect_error

Funktion

Liefert die Fehlermeldung des letzten fehlgeschlagenen <code>mysqli_connect()</code>-Aufrufs als Zeichenkette.

seit PHP 5.0.0 Kategorie: db

Signatur

mysqli_connect_error(): string|null

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

Typ
string|null
Beschreibung
Gibt die Fehlermeldung des letzten fehlgeschlagenen Verbindungsversuchs als 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!';
Verbindung zur Datenbank konnte nicht hergestellt werden.

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.';
Verbindungsfehler (1045): Access denied for user 'root'@'localhost' (using password: YES)

// 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.