Start · Sprachen · PHP · Referenz · fbird_num_params

fbird_num_params

Funktion

Gibt die Anzahl der Parameter (Platzhalter) einer vorbereiteten Firebird/InterBase-Abfrage zurück.

seit PHP 5.0.0 Kategorie: db

Signatur

fbird_num_params(resource $query): int

Beschreibung

fbird_num_params() ermittelt die Anzahl der Eingabeparameter (Platzhalter, d. h. Fragezeichen ?) in einer mit ibase_prepare() bzw. fbird_prepare() vorbereiteten SQL-Abfrage. Dies ist besonders nützlich, um zur Laufzeit zu prüfen, ob die korrekte Anzahl an Parametern an fbird_execute() übergeben wird.

Die Funktion ist ein Alias für ibase_num_params() und gehört zur Firebird-Datenbankschnittstelle in PHP. Sie arbeitet ausschließlich mit vorbereiteten Statement-Ressourcen (Prepared Statements), die zuvor mit fbird_prepare() erzeugt wurden.

Typische Einsatzgebiete sind dynamische Parameterbindung, Validierung von Eingaben vor der Ausführung sowie das Debuggen von SQL-Abfragen mit variablen Parameterzahlen.

Parameter

Name Typ Default Beschreibung
$query Pflicht resource Eine vorbereitete Abfrage-Ressource, die zuvor mit fbird_prepare() oder ibase_prepare() erzeugt wurde.

Rückgabewert

Typ
int
Beschreibung
Gibt die Anzahl der Parameter (Platzhalter ?) der vorbereiteten Abfrage als Ganzzahl zurück.

Beispiele

Anzahl der Parameter einer vorbereiteten Abfrage ermitteln

<?php
$dbh = fbird_connect('localhost:/var/lib/firebird/mydb.fdb', 'SYSDBA', 'masterkey');

$sql = 'SELECT * FROM users WHERE age > ? AND city = ?';
$stmt = fbird_prepare($dbh, $sql);

$numParams = fbird_num_params($stmt);
echo "Anzahl der Parameter: " . $numParams . PHP_EOL;
// Gibt aus: Anzahl der Parameter: 2

fbird_free_query($stmt);
fbird_close($dbh);
Anzahl der Parameter: 2

Dynamische Parametervalidierung vor der Ausführung

<?php
function executeQuery($dbh, string $sql, array $params): mixed {
    $stmt = fbird_prepare($dbh, $sql);
    $expected = fbird_num_params($stmt);

    if (count($params) !== $expected) {
        throw new InvalidArgumentException(
            "Falsche Parameteranzahl: {$expected} erwartet, " . count($params) . " übergeben."
        );
    }

    return fbird_execute($stmt, ...$params);
}

$dbh = fbird_connect('localhost:/var/lib/firebird/mydb.fdb', 'SYSDBA', 'masterkey');

try {
    $result = executeQuery(
        $dbh,
        'SELECT * FROM orders WHERE customer_id = ? AND status = ?',
        [42, 'open']
    );
    while ($row = fbird_fetch_assoc($result)) {
        print_r($row);
    }
} catch (InvalidArgumentException $e) {
    echo 'Fehler: ' . $e->getMessage();
}

fbird_close($dbh);

// Wichtig · Fallstricke

Deprecation-Hinweis: Die fbird_*-Funktionen sind Aliase der ibase_*-Funktionen. Die gesamte ibase/fbird-Extension wurde in PHP 7.4 als veraltet markiert und in PHP 8.0 aus dem offiziellen PHP-Kern entfernt. Ab PHP 8.0 steht sie nur noch über die externe PECL-Extension ibase zur Verfügung. Für neue Projekte sollte eine modernere Firebird-Schnittstelle wie PDO mit dem Firebird-Treiber bevorzugt werden.

Die Funktion liefert nur die Anzahl der Eingabeparameter (Platzhalter), nicht die Anzahl der Ausgabespalten. Für Letzteres steht fbird_num_fields() zur Verfügung.