Start · Sprachen · PHP · Referenz · fbird_errcode

fbird_errcode

Funktion

Gibt den numerischen Fehlercode des zuletzt aufgetretenen Firebird/InterBase-Datenbankfehlers zurück.

seit PHP 5.0.0 Kategorie: db

Signatur

fbird_errcode(): int|false

Beschreibung

fbird_errcode() liefert den numerischen Fehlercode, der beim zuletzt aufgetretenen Fehler in einer Firebird- oder InterBase-Datenbankoperation erzeugt wurde. Die Funktion ist nützlich, um nach fehlgeschlagenen Datenbankoperationen gezielt auf bestimmte Fehlertypen zu reagieren, ohne die vollständige Fehlermeldung parsen zu müssen.

Die Funktion arbeitet eng mit fbird_errmsg() zusammen: Während fbird_errcode() den numerischen Code zurückgibt, liefert fbird_errmsg() die zugehörige Klartextbeschreibung. Beide Funktionen beziehen sich stets auf den zuletzt aufgetretenen Fehler innerhalb des aktuellen PHP-Prozesses.

Typische Anwendungsfälle sind Fehlerbehandlungsroutinen, die bei bestimmten Fehlercodes (z. B. Unique-Constraint-Verletzungen, Verbindungsfehler) unterschiedlich reagieren sollen. Der zurückgegebene Code entspricht dem Firebird/InterBase-internen SQL-Code oder ISC-Fehlercode.

Hinweis: fbird_errcode() ist ein Alias für ibase_errcode(). Beide Funktionen sind seit PHP 8.0 nicht mehr im PHP-Kern enthalten und wurden in die PECL-Erweiterung ibase ausgelagert.

Rückgabewert

Typ
int|false
Beschreibung
Gibt den numerischen Fehlercode des zuletzt aufgetretenen Firebird/InterBase-Fehlers als int zurück. Ist kein Fehler aufgetreten, wird false zurückgegeben.

Beispiele

Fehlercode nach fehlgeschlagener Datenbankoperation auswerten

<?php
$dbh = fbird_connect('localhost:/pfad/zur/datenbank.fdb', 'sysdba', 'masterkey');

$result = fbird_query($dbh, 'INSERT INTO users (id, name) VALUES (1, \'Max\')'); // id=1 existiert bereits

if ($result === false) {
    $errcode = fbird_errcode();
    $errmsg  = fbird_errmsg();

    if ($errcode === -803) {
        echo "Fehler: Datensatz mit dieser ID existiert bereits (Unique-Verletzung).\n";
    } else {
        echo "Datenbankfehler [{$errcode}]: {$errmsg}\n";
    }
}

fbird_close($dbh);
?>
Fehler: Datensatz mit dieser ID existiert bereits (Unique-Verletzung).

Fehlercode und Fehlermeldung gemeinsam loggen

<?php
function firebird_check_error(string $context): void
{
    $code = fbird_errcode();
    if ($code !== false) {
        $msg = fbird_errmsg();
        error_log("[Firebird-Fehler] Kontext: {$context} | Code: {$code} | Meldung: {$msg}");
    }
}

$dbh = fbird_connect('localhost:/data/shop.fdb', 'sysdba', 'masterkey');
$result = fbird_query($dbh, 'SELECT * FROM nicht_vorhandene_tabelle');

if ($result === false) {
    firebird_check_error('Produktabfrage');
    echo "Abfrage fehlgeschlagen. Details wurden geloggt.\n";
}

fbird_close($dbh);
?>
Abfrage fehlgeschlagen. Details wurden geloggt.

// Wichtig · Fallstricke

Deprecation / Entfernung: Die fbird_*- und ibase_*-Funktionen wurden mit PHP 8.0 aus dem PHP-Kern entfernt. Für PHP 8.0 und höher muss die PECL-Erweiterung ibase separat installiert und eingebunden werden. Neue Projekte sollten die Verfügbarkeit dieser Erweiterung in der Zielumgebung explizit prüfen.

fbird_errcode() ist ein direkter Alias für ibase_errcode(); beide Funktionen verhalten sich identisch. Der Fehlercode bezieht sich immer auf den zuletzt aufgetretenen Fehler im aktuellen Skriptablauf, unabhängig von der verwendeten Verbindung.