Start · Sprachen · PHP · Referenz · ibase_num_params

ibase_num_params

Funktion

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

seit PHP 5.0.0 Kategorie: db

Signatur

ibase_num_params(resource $query): int

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

Typ
int
Beschreibung
Gibt die Anzahl der Eingabe-Parameter (Platzhalter ?) 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);
?>
Die Abfrage erwartet 3 Parameter.

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);
?>
Fehler: 2 Parameter erwartet, 1 übergeben.

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