Signatur
Beschreibung
db2_conn_error() liefert den fünfstelligen SQLSTATE-Code, der den Fehler des letzten Verbindungsversuchs beschreibt. SQLSTATE-Codes sind standardisierte Fehlercodes gemäß dem ANSI/ISO SQL-Standard und ermöglichen eine datenbankherstellerunabhängige Fehlerauswertung.
Wird kein Parameter übergeben, gibt die Funktion den SQLSTATE des zuletzt fehlgeschlagenen db2_connect()- oder db2_pconnect()-Aufrufs zurück. Optional kann eine Verbindungsressource übergeben werden, um den Fehlerstatus dieser spezifischen Verbindung abzufragen – nützlich, wenn mehrere Verbindungen gleichzeitig offen sind.
Diese Funktion ist besonders wertvoll in Fehlerbehandlungsroutinen: Während db2_conn_errormsg() eine für Menschen lesbare Fehlermeldung liefert, eignet sich db2_conn_error() dazu, den SQLSTATE programmatisch auszuwerten und gezielt auf bestimmte Fehlerzustände (z. B. falsche Anmeldedaten, Netzwerkfehler, Ressourcenlimits) zu reagieren.
Typischerweise wird die Funktion direkt nach einem gescheiterten Verbindungsversuch aufgerufen, um den Fehlergrund zu ermitteln und ihn z. B. zu loggen oder dem Nutzer eine aussagekräftige Meldung anzuzeigen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $connection | resource | null | Eine optionale DB2-Verbindungsressource, die von db2_connect() oder db2_pconnect() zurückgegeben wurde. Wird kein Parameter angegeben, wird der Fehler des letzten globalen Verbindungsversuchs zurückgegeben. |
Rückgabewert
Beispiele
Fehlerauswertung nach gescheitertem Verbindungsversuch
<?php
$conn = db2_connect('MEINE_DB', 'benutzername', 'falsches_passwort');
if (!$conn) {
$sqlstate = db2_conn_error();
$fehlermsg = db2_conn_errormsg();
echo "Verbindung fehlgeschlagen!" . PHP_EOL;
echo "SQLSTATE: " . $sqlstate . PHP_EOL;
echo "Fehlermeldung: " . $fehlermsg . PHP_EOL;
} else {
echo "Verbindung erfolgreich." . PHP_EOL;
db2_close($conn);
}
Gezieltes Reagieren auf bestimmte SQLSTATE-Codes
<?php
$conn = db2_connect('MEINE_DB', 'benutzer', 'passwort');
if (!$conn) {
$sqlstate = db2_conn_error();
switch (substr($sqlstate, 0, 2)) {
case '08':
echo "Netzwerk- oder Verbindungsfehler (SQLSTATE: $sqlstate)" . PHP_EOL;
break;
case '28':
echo "Ungültige Anmeldedaten (SQLSTATE: $sqlstate)" . PHP_EOL;
break;
case '57':
echo "Ressourcenproblem auf dem Server (SQLSTATE: $sqlstate)" . PHP_EOL;
break;
default:
echo "Unbekannter Fehler (SQLSTATE: $sqlstate)" . PHP_EOL;
}
} else {
echo "Verbindung erfolgreich." . PHP_EOL;
db2_close($conn);
}
// Wichtig · Fallstricke
Sicherheitshinweis: SQLSTATE-Codes und insbesondere die zugehörigen Fehlermeldungen (via db2_conn_errormsg()) sollten niemals ungeprüft an den Endnutzer ausgegeben werden, da sie interne Datenbankstrukturen, Benutzernamen oder Serverinformationen preisgeben können. Stattdessen sollten diese Informationen nur in Server-seitigen Logs erfasst werden.
Die Funktion steht nur zur Verfügung, wenn die ibm_db2-Erweiterung installiert und aktiviert ist. Sie ist primär für IBM DB2, Cloudscape und Apache Derby geeignet. Für andere Datenbanken existieren ähnliche Funktionen, z. B. PDO::errorCode() oder mysqli_connect_errno().