Signatur
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
?) 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);
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.