(PHP 5 >= 5.1.0, PHP 7)
pg_query_params — Sendet ein Kommando zum Server und wartet seine Ausführung ab. Getrennt vom SQL-Kommando können dabei Parameter übergeben werden.
$connection
], string $query
, array $params
)Sendet ein Kommando zum Server und wartet seine Ausführung ab. Getrennt vom SQL-Kommando können dabei Parameter übergeben werden.
pg_query_params() ist ähnlich wie pg_query(), bietet aber zusätzlich die Möglichkeit, Parameterwerte ausserhalb des SQL-Kommandos separat zu übergeben. pg_query_params() wird nur für Verbindungen zu PostgreSQL ab der Version 7.4 unterstützt und schlägt bei allen niedrigeren Versionen fehl.
Falls irgendwelche Parameter übergeben wurden, werden diese in
query
als $1, $2 usw. referenziert. Der gleiche
Parameter darf mehrmals in query
auftauchen; in
diesem Fall wird der selbe Wert verwendet. Im Array
params
werden die aktuellen Parameterwerte
übergeben. Der Wert NULL
in diesem Array repräsentiert den SQL-Wert
NULL.
Der Hauptvorteil von pg_query_params() gegenüber pg_query() liegt darin, dass Parameterwerte vom SQL-Kommando getrennt übergeben werden können und damit das fehlerträchtige und lästige Maskieren und Setzen von Anführungszeichen vermieden werden kann. Im Unterschied zu pg_query() ist bei pg_query_params() nur ein einziges SQL-Kommando erlaubt. (Es können auch Semikolons enthalten sein, aber nicht mehr als ein nichtleeres Kommando.)
connection
PostgreSQL Verbindungskennung. Falls connection
nicht angegeben wurde, wird die zuletzt mit pg_connect()
oder pg_pconnect() geöffnete Verbindung benutzt.
query
Die parametrisierte Abfrage. Diese darf nur ein einziges SQL-Kommando enthalten (mehrere Kommandos, durch Semikolon getrennt, sind nicht zulässig). Falls Parameter übergeben werden, werden sie als $1, $2, ... referenziert.
Anwenderdaten sollten immer als Parameter übergeben werden, und nicht in die Abfragezeichenkette interpoliert werden, wo sie mögliche SQL-Injection Angriffsvektoren bilden und Bugs einführen, wenn die zu behandelnden Daten Anführungszeichen enthalten. Wenn aus irgendeinem Grund Parameter nicht verwendet werden können, ist sicherzustellen, dass Werte ordnungsgemäß maskiert sind.
params
Ein Array mit Parameterwerten, mit denen die Platzhalter $1, $2 usw. in der ursprünglichen vorbereiteten Abfrage ersetzt werden. Die Anzahl der Elemente dieses Arrays muss mit der Anzahl der Platzhalter übereinstimmen.
Werte, die für bytea Felder vorgesehen sind, werden nicht als Parameter unterstützt. Statt dessen sind pg_escape_bytea() oder die Funktionen für große Objekte zu verwenden.
Bei Erfolg wird eine Ergebniskennung zurückgegeben. Im Fehlerfall wird FALSE
zurückgegeben.
Beispiel #1 pg_query_params() Beispiel
<?php
// Verbindung zu einer Datenbank namens "mary" aufbauen
$dbconn = pg_connect("dbname=mary");
// Alle Shops mit dem Namen Joe's Widgets finden. Beachten Sie, dass es
// nicht nötig ist, den String "Joe's Widgets" zu maskieren.
$result = pg_query_params($dbconn, 'SELECT * FROM shops WHERE name = $1', array("Joe's Widgets"));
// Vergleich mit pg_query
$str = pg_escape_string("Joe's Widgets");
$result = pg_query($dbconn, "SELECT * FROM shops WHERE name = '{$str}'");
?>