pg_query_params
(PHP 5 >= 5.1.0, PHP 7)
pg_query_params — Envoie une commande au serveur et attend le résultat, avec les capacités de passer des paramètres séparément de la commande texte SQL
Description
$connection
], string $query
, array $params
) : resourceEnvoie une commande au serveur et attend le résultat, avec les capacités de passer des paramètres séparément de la commande texte SQL.
pg_query_params() est comme pg_query(), mais offre des fonctionnalités additionnelles : les valeurs des paramètres peuvent être spécifiées séparément de la ligne de commande propre. pg_query_params() est supportée seulement avec les versions PostgreSQL 7.4 ou plus récentes; la commande échouera si vous l'utilisez avec des versions antérieures.
Si des paramètres sont utilisés, ils sont référés à $1, $2, etc. dans
query
. Le même paramètre peut survenir plus d'une fois
dans la requête query
; la même valeur sera utilisée
dans ce cas. params
spécifie les
valeurs actuelles des paramètres. Une valeur NULL
dans ce tableau
signifie que le paramètre correspondant est SQL NULL
.
Le principal avantage de pg_query_params() sur
pg_query() est que les valeurs des paramètres peuvent
être séparées de la requête query
, par conséquent,
on évite les échappements de caractères ennuyeux et source d'erreurs.
Contrairement à pg_query(),
pg_query_params() permet seulement une seule commande
SQL dans la chaîne donnée. (Il peut y avoir des points-virgules à
l'intérieur mais pas plus d'une seule commande.)
Liste de paramètres
-
connection
-
La ressource de connexion de la base de données PostgreSQL. Lorsque
connection
n'est pas présent, la connexion par défaut est utilisée. La connexion par défaut est la dernière connexion faite par pg_connect() ou pg_pconnect(). -
query
-
La requête SQL avec ses paramètres. Elle doit contenir seulement une seule requête. Plusieurs requêtes séparées par des points-virgules ne sont pas autorisées. Si des paramètres sont utilisés, ils sont référés à $1, $2, etc.
Les valeurs fournies par l'utilisateur doivent toujours être passées comme paramètres, et non interpolées dans la chaîne de requête, où elles peuvent potentiellement former des injections SQL et introduire des bogues lorsque ces données contiennent des guillemets. Si pour une raison quelconque vous ne pouvez pas utiliser de paramètres, assurez-vous que les valeurs interpolées sont proprement échappées.
-
params
-
Un tableau de valeurs de paramètres pour substituer les variables $1, $2, etc. dans la requête préparée originale. Le nombre d'éléments présents dans le tableau doit concorder avec le nombre de variables à remplacer.
Les valeurs attendues pour les champs bytea ne sont pas supportées comme paramètres. Utilisez plutôt la fonction pg_escape_bytea() ou utilisez les fonctions sur les objets larges.
Exemples
Exemple #1 Exemple avec pg_query_params()
<?php
// Connexion à une base de données nommée "marie"
$dbconn = pg_connect("dbname=marie");
// Cherche tous les magasins nommés Joe's Widgets. Notez qu'il n'est pas
// nécessaire d'échapper la chaîne "Joe's Widgets"
$result = pg_query_params($dbconn, 'SELECT * FROM magasins WHERE nom = $1', array("Joe's Widgets"));
// Compare en utilisant pg_query
$str = pg_escape_string("Joe's Widgets");
$result = pg_query($dbconn, "SELECT * FROM magasins WHERE nom = '{$str}'");
?>
Version en cache
22/11/2024 21:25:14 Cette version de la page est en cache (à la date du 22/11/2024 21:25:14) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-pg-query-params.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.