pg_query_params
Sendet ein Kommando zum Server und wartet seine Ausführung
ab. Getrennt vom SQL-Kommando können dabei Parameter übergeben werden.
Beschreibung
resource pg_query_params
([ resource $connection
], string $query
, array $params
)
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.)
Parameter-Liste
-
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.
Rückgabewerte
Bei Erfolg wird eine Ergebniskennung zurückgegeben. Im Fehlerfall wird FALSE zurückgegeben.
Beispiele
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}'");
?>