Signatur
Beschreibung
ibase_param_info() liefert ein assoziatives Array mit Metadaten zu einem bestimmten Parameter einer vorbereiteten SQL-Abfrage (erzeugt durch ibase_prepare()). Dies ermöglicht es, Typ, Name und weitere Eigenschaften eines Eingabeparameters zur Laufzeit zu inspizieren.
Die Funktion ist nützlich, wenn SQL-Abfragen dynamisch aufgebaut werden oder wenn ein Programm die Struktur von Prepared Statements zur Laufzeit analysieren und validieren muss – beispielsweise in generischen Datenbankabstraktionsschichten.
Der zurückgegebene Array enthält Einträge wie sqltype, sqlscale, sqlsubtype, sqllen, alias, relation und name, die den SQL-Datentyp und weitere Eigenschaften des Parameters beschreiben. Die Nummerierung der Parameter beginnt bei 0.
Hinweis: Die ibase_*-Funktionen erfordern die interbase-Erweiterung (für Firebird/InterBase). Ab PHP 7.4 wurde diese Erweiterung aus dem PHP-Kern entfernt und steht als PECL-Paket (ibase) zur Verfügung.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $query Pflicht | resource | Eine vorbereitete Abfrage-Ressource, wie sie von ibase_prepare() zurückgegeben wird. |
|
| $param_number Pflicht | int | Der nullbasierte Index des Parameters, über den Informationen abgerufen werden sollen. Der erste Parameter hat den Index 0. |
Rückgabewert
sqltype (SQL-Datentyp als Integer), sqlscale (Skalierung), sqlsubtype (Subtyp), sqllen (Länge), alias (Alias-Name), relation (Tabellenname) und name (Parametername). Bei einem Fehler wird false zurückgegeben.Beispiele
Parameterinformationen einer vorbereiteten Abfrage ausgeben
<?php
// Verbindung zur Firebird/InterBase-Datenbank herstellen
$dbh = ibase_connect('/var/db/mydb.fdb', 'sysdba', 'masterkey');
// SQL-Abfrage mit zwei Parametern vorbereiten
$query = ibase_prepare($dbh, 'SELECT * FROM employees WHERE department_id = ? AND salary > ?');
if ($query) {
// Informationen zum ersten Parameter (Index 0) abrufen
$paramInfo = ibase_param_info($query, 0);
echo 'Parameter 0:' . PHP_EOL;
print_r($paramInfo);
// Informationen zum zweiten Parameter (Index 1) abrufen
$paramInfo2 = ibase_param_info($query, 1);
echo 'Parameter 1:' . PHP_EOL;
print_r($paramInfo2);
ibase_free_query($query);
}
ibase_close($dbh);
?>
Alle Parameter einer vorbereiteten Abfrage iterieren
<?php
$dbh = ibase_connect('/var/db/mydb.fdb', 'sysdba', 'masterkey');
$sql = 'INSERT INTO products (name, price, category_id) VALUES (?, ?, ?)';
$query = ibase_prepare($dbh, $sql);
if ($query) {
$numParams = 3; // Anzahl der ?-Platzhalter
for ($i = 0; $i < $numParams; $i++) {
$info = ibase_param_info($query, $i);
echo sprintf(
"Parameter %d: Typ=%d, Länge=%d\n",
$i,
$info['sqltype'],
$info['sqllen']
);
}
ibase_free_query($query);
}
ibase_close($dbh);
?>
// Wichtig · Fallstricke
Deprecation/Verfügbarkeit: Die ibase_*-Funktionsfamilie wurde mit PHP 7.4 aus dem PHP-Kern entfernt. Für PHP 7.4 und neuer muss die PECL-Erweiterung ibase installiert werden. Alternativ steht die fbird_*-Erweiterung als modernerer Ersatz zur Verfügung.
Parameterindex: Der param_number-Parameter ist nullbasiert. Ein ungültiger Index (zu groß oder negativ) führt zu einem Fehler. Die Gesamtanzahl der Parameter kann nicht direkt über eine Funktion abgefragt werden; sie muss aus dem SQL-Statement selbst ermittelt werden.
Typ-Konstanten: Die zurückgegebenen sqltype-Werte entsprechen den internen Firebird/InterBase SQL-Typkonstanten (z. B. 448 für VARCHAR, 480 für DOUBLE PRECISION, 496 für INTEGER).