# pg_query_params

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

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

pg_query_params(PgSql\Connection `$connection` = ?, string `$query`, array `$params`): PgSql\Result|false

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.

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`

  Une instance PgSql\Connection. Quand `connection` est pas spécifié, la connexion par défaut est utilisé. La connexion par défaut est la dernière connexion faite par pg_connect() ou pg_pconnect()

  Avertissement

  À partir de PHP 8.1.0, utiliser la connexion par défaut est obsolète.

`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.

### Valeurs de retour

Une instance PgSql\Result en cas de succès, ou `false` si une erreur survient.

### Historique

Version | Description
--- | ---
8.1.0 | Retourne désormais une instance de PgSql\Result instance ; auparavant, une resource était retourné.
8.1.0 | Le paramètre `connection` attend désormais une instance de PgSql\Connection ; auparavant, une resource était attendu.

### 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}'");
?>`

### Voir aussi

- pg_query() - Exécute une requête PostgreSQL