Signatur
Beschreibung
fbird_query() ist ein Alias für ibase_query() und sendet eine SQL-Anweisung an eine geöffnete Firebird- oder InterBase-Datenbankverbindung. Neben einfachen Abfragen ohne Parameter können auch parametrisierte Abfragen durch Übergabe zusätzlicher Bind-Argumente ausgeführt werden, wobei Platzhalter als ? in der SQL-Zeichenkette angegeben werden.
Die Funktion eignet sich für alle SQL-Anweisungstypen: SELECT, INSERT, UPDATE, DELETE, EXECUTE PROCEDURE usw. Bei SELECT-Abfragen wird ein Ergebnis-Handle zurückgegeben, das anschließend mit Funktionen wie fbird_fetch_assoc(), fbird_fetch_row() oder fbird_fetch_object() ausgelesen werden kann.
Wird kein explizites Verbindungs-Handle übergeben, verwendet die Funktion automatisch die zuletzt geöffnete Verbindung. Für größere Anwendungen empfiehlt sich jedoch stets die explizite Übergabe des Verbindungs-Handles, um unerwartetes Verhalten zu vermeiden.
Hinweis: Das Firebird-Modul (ibase/fbird) wurde in PHP 7.4 aus dem Kern ausgelagert und wird ab PHP 8.0 als eigenständige PECL-Extension gepflegt. fbird_query() ist ein direkter Alias von ibase_query().
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $link_identifier | resource | null | Ein von fbird_connect() oder fbird_pconnect() zurückgegebenes Verbindungs-Handle. Wird es weggelassen, wird die zuletzt geöffnete Verbindung verwendet. |
| $query Pflicht | string | Die auszuführende SQL-Anweisung. Parameter-Platzhalter werden als ? angegeben, deren Werte als nachfolgende Argumente übergeben werden. |
|
| $bind_args | mixed | Beliebig viele optionale Bind-Argumente, die den ?-Platzhaltern in der SQL-Anweisung der Reihe nach zugeordnet werden. Werte werden automatisch typsicher gebunden. |
Rückgabewert
fbird_fetch_assoc() verwendet werden kann. Bei nicht-selektierenden Anweisungen (z. B. INSERT) wird true zurückgegeben. Im Fehlerfall wird false zurückgegeben; der Fehler kann mit fbird_errmsg() abgefragt werden.Beispiele
Einfache SELECT-Abfrage ausführen
<?php
$dbh = fbird_connect('localhost:/var/lib/firebird/data/meine_db.fdb', 'sysdba', 'geheim');
if (!$dbh) {
die('Verbindung fehlgeschlagen: ' . fbird_errmsg());
}
$result = fbird_query($dbh, 'SELECT id, name FROM kunden ORDER BY name');
if ($result === false) {
die('Abfrage fehlgeschlagen: ' . fbird_errmsg());
}
while ($row = fbird_fetch_assoc($result)) {
echo $row['ID'] . ' - ' . $row['NAME'] . PHP_EOL;
}
fbird_free_result($result);
fbird_close($dbh);
Parametrisiertes INSERT mit Bind-Argumenten
<?php
$dbh = fbird_connect('localhost:/var/lib/firebird/data/meine_db.fdb', 'sysdba', 'geheim');
$name = 'Hans Beispiel';
$email = 'hans@beispiel.de';
$alter = 42;
$result = fbird_query(
$dbh,
'INSERT INTO kunden (name, email, alter) VALUES (?, ?, ?)',
$name,
$email,
$alter
);
if ($result === false) {
die('Einfügen fehlgeschlagen: ' . fbird_errmsg());
}
echo 'Datensatz erfolgreich eingefügt.' . PHP_EOL;
fbird_commit($dbh);
fbird_close($dbh);
// Wichtig · Fallstricke
Sicherheit: Obwohl fbird_query() parametrisierte Abfragen mit ?-Platzhaltern unterstützt, sollte niemals eine SQL-Anweisung durch direkte Zeichenketten-Verkettung mit Benutzereingaben gebildet werden — dies öffnet SQL-Injection-Lücken. Verwende stets die Bind-Argumente für variable Werte.
Transaktionen: Standardmäßig arbeitet die Funktion innerhalb der automatischen Transaktion der Verbindung. Für explizite Transaktionskontrolle kann stattdessen fbird_trans() verwendet werden, wobei das Transaktions-Handle anstelle des Verbindungs-Handles übergeben wird.
Deprecation / Verfügbarkeit: Ab PHP 7.4 wurde die ibase-Extension aus dem PHP-Kern entfernt und als PECL-Paket (ibase bzw. firebird) weitergeführt. fbird_query() ist ein Alias von ibase_query() und kann je nach PHP-Version und installierten Extensions unterschiedlich verfügbar sein.
Ergebnis-Handles sollten nach Verwendung stets mit fbird_free_result() freigegeben werden, um Speicherlecks zu vermeiden.