W3docs

connect_errno

Die Funktion mysqli_connect_errno() in PHP gibt den Fehlercode des letzten MySQLi-Verbindungsversuchs zurück oder 0 bei Erfolg.

Die Funktion mysqli_connect_errno() gibt den Fehlercode des letzten MySQLi-Verbindungsversuchs zurück, oder 0, wenn kein Fehler aufgetreten ist. Sie ist die Standardmethode, um zu prüfen, ob ein Aufruf von mysqli_connect() (oder dem Konstruktor new mysqli()) tatsächlich erfolgreich war, bevor Abfragen ausgeführt werden. Diese Seite behandelt die Syntax, den Rückgabewert, Unterschiede zu verwandten Funktionen und wichtige Fallstricke.

Warum die Verbindungsprüfung wichtig ist

Wenn eine MySQLi-Verbindung fehlschlägt, wird das Handle $mysqli trotzdem zurückgegeben, ist aber nicht verwendbar. Wird die Prüfung übersprungen und sofort eine Abfrage ausgeführt, gibt PHP eine Warnung aus und das Skript läuft mit einer fehlerhaften Verbindung weiter – was oft zu verwirrenden Folgefehlern führt. Der Aufruf von mysqli_connect_errno() direkt nach dem Verbindungsaufbau ermöglicht einen schnellen Abbruch mit einer klaren Fehlermeldung.

Ein wichtiges Detail: mysqli_connect_errno() ist eine eigenständige Funktion. Sie wird ohne Argumente aufgerufen – sie liest den globalen Zustand des letzten Verbindungsversuchs, nicht ein bestimmtes Verbindungsobjekt.

Syntax

mysqli_connect_errno(): int
ParameterKeine.
RückgabewertEin int: der Fehlercode (errno) des letzten Verbindungsversuchs, oder 0, wenn der letzte Versuch erfolgreich war.

Der numerische Code entspricht einer MySQL/MariaDB-Client-Fehlernummer – zum Beispiel 1045 für Zugriff verweigert oder 2002 für Verbindung abgelehnt. Für die lesbare Fehlermeldung wird mysqli_connect_error() kombiniert.

Grundlegende Verwendung (prozeduraler Stil)

Die Funktion wird direkt nach mysqli_connect() aufgerufen und bei einem Wert ungleich null wird das Skript frühzeitig beendet:

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

if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
    exit();
}

echo "Connected successfully.";
// execute queries using $mysqli

mysqli_close($mysqli);
?>

Bei falschen Zugangsdaten wird etwa Failed to connect to MySQL: Access denied for user 'username'@'localhost' ausgegeben und das Skript stoppt. Bei Erfolg erscheint Connected successfully.. Da der Fehlercode nur bei einem Wert ungleich null wahr ist, liest sich if (mysqli_connect_errno()) natürlich als „wenn ein Fehler aufgetreten ist".

Objektorientierter Stil

Bei Verwendung der Klasse mysqli entspricht mysqli_connect_errno() der Eigenschaft connect_errno des Objekts. Sie wird auf dieselbe Weise gelesen – direkt nach der Instanziierung:

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

if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
    exit();
}

echo "Connected successfully.";
// execute queries using $mysqli

$mysqli->close();
?>

Hier enthält $mysqli->connect_errno den numerischen Code und $mysqli->connect_error die Meldung – durch Kombination (z. B. (1045) Access denied...) lassen sich Log-Einträge leicht durchsuchen.

connect_errno im Vergleich zu verwandten Funktionen

Die Verbindungsfehler-Funktionen werden leicht mit den allgemeinen MySQLi-Fehlerfunktionen verwechselt. Sie berichten über unterschiedliche Dinge:

Funktion / EigenschaftBezieht sich aufWann verwenden
mysqli_connect_errno()Den letzten VerbindungsversuchDirekt nach dem Verbinden
mysqli_connect_error()Den letzten Verbindungsversuch (Meldung)Um einen lesbaren Verbindungsfehler anzuzeigen
mysqli_errno()Die letzte Abfrage auf einer offenen VerbindungNach mysqli_query() usw.
mysqli_error()Die letzte Abfrage (Meldung)Um einen lesbaren Abfragefehler anzuzeigen

Kurz gesagt: connect_errno/connect_error für den Handshake verwenden, und errno/error für Abfragen, sobald eine Verbindung besteht.

Häufige Fallstricke

  • Es wird nur der letzte Versuch widergespiegelt. Werden mehrere Verbindungen geöffnet, meldet mysqli_connect_errno() die letzte. Für objektgenaue Präzision im OO-Code ist $mysqli->connect_errno vorzuziehen.
  • Prüfung vor der ersten Abfrage, nicht danach. Sobald eine Abfrage ausgeführt wird, spiegelt mysqli_connect_errno() zwar noch den Verbindungsversuch wider, aber die Verwechslung mit mysqli_errno() führt zu Fehlern.
  • Eine Wahrheitswertprüfung genügt. Den Code mit einer bestimmten Zahl zu vergleichen ist selten nötig; if (mysqli_connect_errno()) deckt jeden Fehlerfall ab.
  • Exceptions als Alternative. Seit PHP 8.1 wirft MySQLi standardmäßig eine mysqli_sql_exception bei Fehlern (mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT)), sodass eine fehlgeschlagene Verbindung eine Ausnahme auslöst statt ein ungültiges Handle zurückzugeben. In diesem Modus wird die Verbindung in try/catch eingebettet statt connect_errno abzufragen.

Verwandte Funktionen

Fazit

mysqli_connect_errno() ist die schnellste zuverlässige Prüfung, ob eine MySQLi-Verbindung korrekt geöffnet wurde: Ein Rückgabewert ungleich null bedeutet, dass der Handshake fehlgeschlagen ist, 0 bedeutet, dass Abfragen ausgeführt werden können. In Kombination mit mysqli_connect_error() für lesbare Meldungen einsetzen, von der Abfrageebene mysqli_errno() unterscheiden, und ab PHP 8.1+ try/catch mit Exception-Modus als moderne Alternative in Betracht ziehen.

Übungen

Übung
Was macht die Funktion 'connect_errno' in PHP?
Was macht die Funktion 'connect_errno' in PHP?
Was this page helpful?