Signatur
Beschreibung
ibase_errcode() liefert den numerischen Fehlercode, der beim letzten fehlgeschlagenen Interbase- bzw. Firebird-Datenbankaufruf erzeugt wurde. Die Funktion wird typischerweise zusammen mit ibase_errmsg() eingesetzt, um sowohl den Fehlercode als auch die zugehörige Fehlermeldung auszulesen und in der Fehlerbehandlung zu verarbeiten.
Die zurückgegebenen Fehlercodes sind Interbase/Firebird-spezifische Ganzzahlen und können in der Firebird-Dokumentation nachgeschlagen werden, um die genaue Ursache eines Fehlers zu ermitteln. Typische Einsatzszenarien sind das Überprüfen von SQL-Abfragefehlern, Verbindungsfehlern oder Transaktionsproblemen.
Die Funktion gibt false zurück, wenn kein Fehler vorliegt oder kein Fehlercode verfügbar ist. Es empfiehlt sich daher, vor dem Aufruf sicherzustellen, dass eine Datenbankoperation tatsächlich fehlgeschlagen ist.
Hinweis: Die ibase_*-Funktionen gehören zur Interbase-Erweiterung, die ab PHP 8.0 aus dem PHP-Kern entfernt wurde und seither als separates PECL-Paket verfügbar ist.
Rückgabewert
int zurück. Wenn kein Fehler vorliegt oder kein Fehlercode verfügbar ist, wird false zurückgegeben.Beispiele
Fehlercode und Fehlermeldung nach einer fehlgeschlagenen Abfrage ausgeben
<?php
$dbh = ibase_connect('/var/lib/firebird/employee.fdb', 'sysdba', 'masterkey');
// Absichtlich fehlerhafte SQL-Abfrage
$result = @ibase_query($dbh, 'SELECT * FROM nicht_vorhandene_tabelle');
if ($result === false) {
$code = ibase_errcode();
$msg = ibase_errmsg();
if ($code !== false) {
echo 'Fehlercode: ' . $code . PHP_EOL;
echo 'Fehlermeldung: ' . $msg . PHP_EOL;
} else {
echo 'Kein Fehlercode verfügbar.' . PHP_EOL;
}
}
ibase_close($dbh);
Fehlerbehandlungs-Hilfsfunktion für Interbase-Fehler
<?php
function handleIbaseError(string $context = ''): void
{
$code = ibase_errcode();
$msg = ibase_errmsg();
if ($code !== false) {
$prefix = $context !== '' ? "[$context] " : '';
error_log($prefix . 'Interbase-Fehlercode: ' . $code . ' – ' . $msg);
throw new RuntimeException(
$prefix . 'Datenbankfehler (Code ' . $code . '): ' . $msg
);
}
}
$dbh = ibase_connect('/var/lib/firebird/employee.fdb', 'sysdba', 'masterkey');
$result = @ibase_query($dbh, 'INSERT INTO schreibgeschuetzte_tabelle VALUES (1)');
if ($result === false) {
handleIbaseError('INSERT-Vorgang');
}
ibase_close($dbh);
// Wichtig · Fallstricke
Deprecation / Entfernung: Die gesamte ibase_*-Erweiterung wurde mit PHP 8.0 aus dem offiziellen PHP-Kern entfernt. Für PHP 8 und neuer steht die Erweiterung als PECL-Paket zur Verfügung. Für neue Projekte sollte stattdessen der offizielle Firebird PDO-Treiber (PDO_FIREBIRD) oder die fbird_*-Funktionen genutzt werden.
Da ibase_errcode() global den letzten Fehler zurückgibt, kann es in nebenläufigen oder komplexen Szenarien mit mehreren Verbindungen zu unerwarteten Ergebnissen kommen. Es empfiehlt sich, Fehler direkt nach dem fehlgeschlagenen Aufruf abzufragen.