Start · Sprachen · PHP · Referenz · db2_conn_error

db2_conn_error

Funktion

Gibt den SQLSTATE-Fehlercode des letzten fehlgeschlagenen Verbindungsversuchs zu einer IBM DB2-Datenbank zurück.

seit PHP 5.1.0 Kategorie: db

Signatur

db2_conn_error(resource $connection = null): string

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

Typ
string
Beschreibung
Gibt einen fünfstelligen SQLSTATE-String zurück, der den Fehler des letzten Verbindungsversuchs beschreibt. Wenn kein Fehler aufgetreten ist, wird ein leerer String zurückgegeben.

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);
}
Verbindung fehlgeschlagen! SQLSTATE: 28000 Fehlermeldung: [IBM][CLI Driver] SQL30082N Security processing failed with reason "24" ("USERNAME AND/OR PASSWORD INVALID"). SQLSTATE=28000

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);
}
Ungültige Anmeldedaten (SQLSTATE: 28000)

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