Start · Sprachen · PHP · Referenz · fbird_query

fbird_query

Funktion

Führt eine SQL-Abfrage auf einer Firebird/InterBase-Datenbankverbindung aus und gibt ein Ergebnis-Handle zurück.

seit PHP 5.0.0 Kategorie: db

Signatur

fbird_query(resource $link_identifier = null, string $query, mixed ...$bind_args): resource|false

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

Typ
resource|false
Beschreibung
Bei Erfolg ein Ergebnis-Handle (Resource), das für Abruffunktionen wie 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);
1 - Max Mustermann 2 - Erika Musterfrau

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);
Datensatz erfolgreich eingefügt.

// 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.