Signatur
Beschreibung
ibase_num_params() ermittelt, wie viele Eingabe-Parameter (Platzhalter, z. B. ?) eine mit ibase_prepare() vorbereitete SQL-Abfrage enthält. Dies ist nützlich, wenn zur Laufzeit dynamisch geprüft werden soll, ob die korrekte Anzahl an Parametern an ibase_execute() übergeben wird.
Die Funktion gehört zur Interbase/Firebird-Erweiterung (ibase_*) und arbeitet ausschließlich mit Ressourcen, die von ibase_prepare() zurückgegeben wurden. Sie ist das Gegenstück zu ibase_num_fields(), welches die Anzahl der Ausgabespalten eines Ergebnisses liefert.
Typische Anwendungsfälle sind die Validierung von Eingabedaten vor der Ausführung einer vorbereiteten Abfrage sowie das dynamische Befüllen von Parameter-Arrays in generischen Datenbank-Hilfsklassen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $query Pflicht | resource | Eine vorbereitete Abfrage-Ressource, die von ibase_prepare() zurückgegeben wurde. |
Rückgabewert
?) in der vorbereiteten Abfrage als Ganzzahl zurück.Beispiele
Anzahl der Parameter einer vorbereiteten Abfrage ermitteln
<?php
$dbh = ibase_connect('localhost:database.fdb', 'username', 'password');
$sql = 'INSERT INTO orders (customer_id, product_id, quantity) VALUES (?, ?, ?)';
$stmt = ibase_prepare($dbh, $sql);
$paramCount = ibase_num_params($stmt);
echo "Die Abfrage erwartet {$paramCount} Parameter.\n";
// Ausgabe: Die Abfrage erwartet 3 Parameter.
ibase_free_query($stmt);
ibase_close($dbh);
?>
Dynamische Parametervalidierung vor Ausführung
<?php
function executeWithValidation(resource $dbh, string $sql, array $params): bool
{
$stmt = ibase_prepare($dbh, $sql);
$expected = ibase_num_params($stmt);
$provided = count($params);
if ($expected !== $provided) {
echo "Fehler: {$expected} Parameter erwartet, {$provided} übergeben.\n";
ibase_free_query($stmt);
return false;
}
// Parameter entpacken und Abfrage ausführen
ibase_execute($stmt, ...$params);
ibase_free_query($stmt);
return true;
}
$dbh = ibase_connect('localhost:database.fdb', 'username', 'password');
$sql = 'UPDATE products SET price = ? WHERE id = ?';
// Falsche Anzahl an Parametern
executeWithValidation($dbh, $sql, [19.99]); // Fehler
// Korrekte Anzahl an Parametern
executeWithValidation($dbh, $sql, [19.99, 42]); // OK
ibase_close($dbh);
?>
// Wichtig · Fallstricke
Deprecation-Hinweis: Die ibase_*-Erweiterung wurde in PHP 7.4 als veraltet markiert und in PHP 8.0 aus dem PHP-Kern entfernt. Ab PHP 8.0 steht die Funktionalität nur noch über die separate PECL-Erweiterung oder die Firebird/Interbase PDO-Anbindung zur Verfügung. Für neue Projekte wird die Verwendung von PDO mit dem Firebird-Treiber empfohlen.
Die Funktion ist nur verwendbar, wenn die Abfrage über ibase_prepare() vorbereitet wurde. Eine direkt ausgeführte Abfrage (via ibase_query()) liefert keine auswertbare Ressource für ibase_num_params().