Signatur
Beschreibung
fbird_errmsg() liefert den Fehlertext des zuletzt aufgetretenen Fehlers bei einer Firebird- oder InterBase-Datenbankoperation. Die Funktion ist das textuelle Gegenstück zu fbird_errcode(), das den numerischen Fehlercode zurückgibt.
Typischerweise wird fbird_errmsg() direkt nach einer fehlgeschlagenen Datenbankoperation aufgerufen, um eine aussagekräftige Fehlermeldung für Logging- oder Debugging-Zwecke zu erhalten. Sie sollte stets in Kombination mit einer Fehlerprüfung des vorangegangenen Datenbankaufrufs verwendet werden.
Hinweis: fbird_errmsg() ist ein Alias für ibase_errmsg(). Beide Funktionen greifen auf denselben internen Fehlerpuffer zu, der bei jeder neuen Datenbankoperation überschrieben wird.
Die Funktion gibt false zurück, wenn kein Fehler aufgetreten ist oder der Fehlerpuffer leer ist. Im Fehlerfall enthält die Rückgabe den vollständigen Fehlertext des Firebird/InterBase-Treibers, was die Ursachenanalyse erheblich vereinfacht.
Rückgabewert
string zurück. Wenn kein Fehler aufgetreten ist oder der Fehlerpuffer leer ist, wird false zurückgegeben.Beispiele
Fehlermeldung nach fehlgeschlagenem Query ausgeben
<?php
$dbh = fbird_connect('localhost:/pfad/zur/datenbank.fdb', 'sysdba', 'masterkey');
if ($dbh === false) {
die('Verbindung fehlgeschlagen: ' . fbird_errmsg());
}
$result = fbird_query($dbh, 'SELECT * FROM nicht_vorhandene_tabelle');
if ($result === false) {
$fehler = fbird_errmsg();
echo 'Datenbankfehler: ' . htmlspecialchars($fehler) . PHP_EOL;
} else {
// Ergebnis verarbeiten
while ($row = fbird_fetch_assoc($result)) {
print_r($row);
}
fbird_free_result($result);
}
fbird_close($dbh);
Zentralisierte Fehlerbehandlung mit fbird_errmsg
<?php
function db_query_safe($dbh, string $sql, array $params = []) {
$result = fbird_query($dbh, $sql, ...$params);
if ($result === false) {
$errCode = fbird_errcode();
$errMsg = fbird_errmsg();
error_log(sprintf('[Firebird] Fehlercode %d: %s | SQL: %s', $errCode, $errMsg, $sql));
throw new RuntimeException('Datenbankfehler: ' . $errMsg, $errCode);
}
return $result;
}
try {
$dbh = fbird_connect('localhost:/data/myapp.fdb', 'sysdba', 'masterkey');
$res = db_query_safe($dbh, 'SELECT ID, NAME FROM USERS WHERE ACTIVE = ?', [1]);
while ($row = fbird_fetch_assoc($res)) {
echo $row['ID'] . ': ' . $row['NAME'] . PHP_EOL;
}
fbird_free_result($res);
fbird_close($dbh);
} catch (RuntimeException $e) {
echo 'Fehler: ' . htmlspecialchars($e->getMessage()) . PHP_EOL;
}
// Wichtig · Fallstricke
Deprecation: Die ibase_*- und fbird_*-Funktionen gehören zur ibase-Erweiterung, die ab PHP 7.4 aus dem PHP-Kern entfernt und in PECL ausgelagert wurde. Für neue Projekte sollte eine alternative Datenbankabstraktionsschicht oder PDO mit einem geeigneten Firebird-Treiber verwendet werden.
Fehlerpuffer: Der interne Fehlerpuffer wird bei jeder neuen Datenbankoperation überschrieben. fbird_errmsg() muss daher unmittelbar nach der fehlgeschlagenen Operation aufgerufen werden, bevor weitere Datenbankbefehle ausgeführt werden.
Sicherheit: Fehlermeldungen aus fbird_errmsg() können interne Informationen wie Tabellennamen, Spaltennamen oder Datenbankpfade enthalten. Diese sollten niemals unbereinigt an Endbenutzer ausgegeben werden — immer htmlspecialchars() verwenden und detaillierte Fehlertexte nur ins Server-Log schreiben.