Signatur
Beschreibung
ibase_errmsg() liefert die Klartextbeschreibung des letzten Fehlers, der bei einer InterBase- oder Firebird-Datenbankoperation aufgetreten ist. Die Funktion ergänzt ibase_errcode(), die den numerischen Fehlercode zurückgibt.
Sie wird typischerweise unmittelbar nach einer fehlgeschlagenen Datenbankoperation aufgerufen – z. B. nach ibase_query(), ibase_execute() oder ibase_connect() – um dem Entwickler oder Benutzer eine aussagekräftige Fehlermeldung bereitzustellen.
Die Fehlermeldung bezieht sich immer auf den zuletzt aufgetretenen Fehler der aktuellen Verbindung. Wurde kein Fehler ausgelöst, gibt die Funktion false zurück. Es empfiehlt sich, die Rückgabe stets mit === false zu prüfen, um den fehlerfreien Zustand sicher zu erkennen.
Hinweis: Die ibase_*-Funktionen (auch als fbird_* verfügbar) sind seit PHP 7.4 aus dem PHP-Kern entfernt und stehen nur noch über die PECL-Erweiterung ibase zur Verfügung.
Rückgabewert
string zurück. Wurde kein Fehler ausgelöst, wird false zurückgegeben.Beispiele
Fehlerbehandlung nach fehlgeschlagener Abfrage
<?php
$conn = ibase_connect('localhost:employee.fdb', 'sysdba', 'masterkey');
if (!$conn) {
echo 'Verbindungsfehler: ' . ibase_errmsg();
exit;
}
$result = ibase_query($conn, 'SELECT * FROM nicht_vorhandene_tabelle');
if (!$result) {
$errorCode = ibase_errcode();
$errorMsg = ibase_errmsg();
echo "Datenbankfehler [{$errorCode}]: {$errorMsg}" . PHP_EOL;
}
ibase_close($conn);
Allgemeine Hilfsfunktion zur Fehlerprotokollierung
<?php
function handleIbaseError(string $context): void {
$msg = ibase_errmsg();
$code = ibase_errcode();
if ($msg !== false) {
error_log("[Firebird] {$context} | Code: {$code} | Meldung: {$msg}");
throw new RuntimeException("Datenbankfehler in '{$context}': {$msg}", $code);
}
}
$conn = ibase_connect('localhost:mydb.fdb', 'sysdba', 'masterkey');
try {
$res = ibase_query($conn, 'INSERT INTO orders (invalid_col) VALUES (1)');
if (!$res) {
handleIbaseError('INSERT in orders');
}
} catch (RuntimeException $e) {
echo 'Fehler abgefangen: ' . $e->getMessage() . PHP_EOL;
} finally {
ibase_close($conn);
}
// Wichtig · Fallstricke
Deprecation / Entfernung: Die ibase_*-Erweiterung wurde mit PHP 7.4 aus dem offiziellen PHP-Kern ausgelagert. Ab PHP 8.0 ist sie nur noch über PECL verfügbar. Für neue Projekte sollte stattdessen eine moderne Datenbankabstraktionsschicht (z. B. PDO mit dem Firebird-Treiber) verwendet werden.
Alternativ steht dieselbe Funktionalität unter dem Alias fbird_errmsg() zur Verfügung, der in manchen Installationen bevorzugt verwendet wird.
Da ibase_errmsg() immer den letzten globalen Fehler zurückgibt, sollte sie unmittelbar nach der fehlschlagenden Operation aufgerufen werden, bevor weitere Datenbankoperationen den Fehlerzustand überschreiben können.