Start · Sprachen · PHP · Referenz · fbird_execute

fbird_execute

Funktion

Führt eine zuvor mit <code>fbird_prepare()</code> vorbereitete Firebird/InterBase-Abfrage aus.

seit PHP 5.0.0 Kategorie: db

Signatur

fbird_execute(resource $query, mixed ...$values): resource|bool

Beschreibung

fbird_execute() führt eine SQL-Abfrage aus, die zuvor mit fbird_prepare() vorbereitet wurde. Die Funktion ist ein Alias für ibase_execute() und gehört zur Firebird/InterBase-Datenbankschnittstelle von PHP.

Der Hauptvorteil gegenüber fbird_query() liegt im Prepared-Statement-Konzept: Die SQL-Abfrage wird einmal analysiert und kompiliert, danach kann sie mehrfach mit unterschiedlichen Parametern ausgeführt werden – das spart Verarbeitungszeit und schützt vor SQL-Injection, da Werte und SQL-Logik sauber getrennt sind.

Parameterwerte werden als zusätzliche Argumente nach dem $query-Handle übergeben. Die Platzhalter in der vorbereiteten Abfrage werden dabei in der Reihenfolge der übergebenen Parameter ersetzt. Bei SELECT-Abfragen wird ein Ergebnis-Handle zurückgegeben, das mit fbird_fetch_row() oder ähnlichen Funktionen ausgelesen werden kann; bei anderen Abfragetypen wird true zurückgegeben.

Hinweis: Diese Funktion ist seit PHP 8.4 nicht mehr Teil des PHP-Kerns und wurde in die PECL-Erweiterung ibase ausgelagert. Für neue Projekte sollte die entsprechende PDO-Erweiterung oder eine aktiv gewartete Bibliothek in Betracht gezogen werden.

Parameter

Name Typ Default Beschreibung
$query Pflicht resource Ein vorbereitetes Abfrage-Handle, das von fbird_prepare() zurückgegeben wurde.
$values mixed Beliebig viele optionale Werte, die den Platzhaltern (?) in der vorbereiteten Abfrage entsprechen. Die Anzahl der Werte muss mit der Anzahl der Platzhalter übereinstimmen.

Rückgabewert

Typ
resource|bool
Beschreibung
Bei SELECT-Abfragen wird ein Ergebnis-Handle zurückgegeben, das mit Fetch-Funktionen ausgelesen werden kann. Bei DML-Abfragen (INSERT, UPDATE, DELETE) wird true bei Erfolg zurückgegeben. Im Fehlerfall wird false zurückgegeben.

Beispiele

Mehrfaches Ausführen einer INSERT-Abfrage mit verschiedenen Werten

<?php
$dbh = fbird_connect('localhost:mydb', 'user', 'password');

// Abfrage einmal vorbereiten
$stmt = fbird_prepare($dbh, 'INSERT INTO kunden (name, email) VALUES (?, ?)');

$kunden = [
    ['Max Mustermann', 'max@example.com'],
    ['Erika Muster',   'erika@example.com'],
    ['John Doe',       'john@example.com'],
];

foreach ($kunden as [$name, $email]) {
    // Abfrage mit verschiedenen Parametern wiederverwenden
    if (!fbird_execute($stmt, $name, $email)) {
        echo "Fehler beim Einfügen von: $name\n";
    } else {
        echo "Eingefügt: $name\n";
    }
}

fbird_commit($dbh);
fbird_close($dbh);
Eingefügt: Max Mustermann Eingefügt: Erika Muster Eingefügt: John Doe

SELECT-Abfrage mit Parameter und Ergebnisausgabe

<?php
$dbh = fbird_connect('localhost:mydb', 'user', 'password');

$stmt = fbird_prepare($dbh, 'SELECT id, name, email FROM kunden WHERE id = ?');

$result = fbird_execute($stmt, 42);

if ($result) {
    while ($row = fbird_fetch_assoc($result)) {
        echo 'ID: ' . $row['ID'] . ', Name: ' . $row['NAME'] . ', E-Mail: ' . $row['EMAIL'] . "\n";
    }
} else {
    echo 'Abfrage fehlgeschlagen.';
}

fbird_free_result($result);
fbird_close($dbh);
ID: 42, Name: Max Mustermann, E-Mail: max@example.com

// Wichtig · Fallstricke

Deprecation/Verfügbarkeit: Die fbird_*-Funktionen sind Aliase der ibase_*-Funktionen. Ab PHP 8.4 wurde die InterBase/Firebird-Erweiterung aus dem PHP-Kern entfernt und steht nur noch über PECL zur Verfügung. Für neue Projekte wird PDO mit einem geeigneten Firebird-Treiber empfohlen.

SQL-Injection: Obwohl Prepared Statements grundsätzlich vor SQL-Injection schützen, sollten übergebene Werte dennoch auf Plausibilität geprüft werden. Niemals rohe Benutzereingaben ohne Validierung weitergeben.

Transaktionen: Standardmäßig werden Änderungen nicht automatisch festgeschrieben. Nach DML-Operationen muss explizit fbird_commit() aufgerufen werden, sonst werden die Änderungen bei Verbindungsende verworfen.

Parameteranzahl: Die Anzahl der übergebenen Werte muss exakt mit der Anzahl der ?-Platzhalter in der vorbereiteten Abfrage übereinstimmen, sonst schlägt die Ausführung fehl.