# PDOStatement::bindParam

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDOStatement::bindParam — Lie un paramètre à un nom de variable spécifique

### Description

public PDOStatement::bindParam(
string|int `$param`,
mixed `&$var`,
int `$type` = PDO::PARAM_STR,
int `$maxLength` = 0,
mixed `$driverOptions` = `null`
): bool

Lie une variable PHP à un marqueur nommé ou interrogatif correspondant dans une requête SQL utilisée pour préparer la requête. Contrairement à PDOStatement::bindValue(), la variable est liée en tant que référence et ne sera évaluée qu'au moment de l'appel à la fonction PDOStatement::execute().

La plupart des paramètres sont des paramètres d'entrées, et sont utilisés en lecture seule pour construire la requête (mais peuvent néanmoins être transtypé en fonction de `data_type`). Quelques drivers supportent l'invocation de procédures stockées qui retournent des données en tant que paramètres de sortie, et quelques autres en tant que paramètres entrées / sorties qui sont envoyés ensemble et sont mis à jour pour les recevoir.

### Liste de paramètres

`param`

  Identifiant. Pour une requête préparée utilisant des marqueurs nommés, ce sera le nom du paramètre sous la forme :name. Pour une requête préparée utilisant les marqueurs interrogatifs, ce sera la position indexée +1 du paramètre.

`var`

  Nom de la variable PHP à lier au paramètre de la requête SQL.

`type`

  Type explicite de données pour le paramètre utilisant les constantes `PDO::PARAM_*`. Pour retourner un paramètre INOUT depuis une procédure stockée, utilisez l'opérateur OR pour définir l'octet `PDO::PARAM_INPUT_OUTPUT` pour le paramètre `type`.

`maxLength`

  Longueur du type de données. Pour indiquer qu'un paramètre est un paramètre OUT depuis une procédure stockée, vous devez explicitement définir la longueur. Significatif uniquement lorsque le paramètre `type` est `PDO::PARAM_INPUT_OUTPUT`.

`driverOptions`

### Valeurs de retour

Cette fonction retourne `true` en cas de succès ou `false` si une erreur survient.

### Erreurs / Exceptions

Émet une erreur de niveau `E_WARNING` si l'attribut `PDO::ATTR_ERRMODE` est défini à `PDO::ERRMODE_WARNING`.

Lève une exception PDOException si l'attribut `PDO::ATTR_ERRMODE` est défini à `PDO::ERRMODE_EXCEPTION`.

### Exemples

Exemple #1 Exécution d'une requête préparée avec des emplacements nommés

`<?php
/* Exécution d'une requête préparée en liant des variables PHP */
$calories = 150;
$couleur = 'rouge';
$sth = $dbh->prepare('SELECT nom, couleur, calories
FROM fruit
WHERE calories < :calories AND couleur = :couleur');
$sth->bindParam('calories', $calories, PDO::PARAM_INT);
/* Les noms peuvent aussi être préfixés par des deux-points ":" (facultatif) */
$sth->bindParam(':couleur', $couleur, PDO::PARAM_STR);
$sth->execute();
?>`

Exemple #2 Exécution d'une requête préparée avec des marqueurs de positionnement

`<?php
/* Exécution d'une requête préparée en liant des variables PHP */
$calories = 150;
$couleur = 'rouge';
$sth = $dbh->prepare('SELECT nom, couleur, calories
FROM fruit
WHERE calories < ? AND couleur = ?');
$sth->bindParam(1, $calories, PDO::PARAM_INT);
$sth->bindParam(2, $couleur, PDO::PARAM_STR);
$sth->execute();
?>`

Exemple #3 Appel une procédure stockée avec un paramètre INOUT

`<?php
/* Appel une procédure stockée avec un paramètre INOUT */
$couleur = 'rouge';
$sth = $dbh->prepare('CALL puree_fruit(?)');
$sth->bindParam(1, $couleur, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->execute();
print "Après avoir pressé le fruit, la couleur est : $couleur";
?>`

### Voir aussi

- PDO::prepare() - Prépare une requête à l'exécution et retourne un objet
- PDOStatement::execute() - Exécute une requête préparée
- PDOStatement::bindValue() - Associe une valeur à un paramètre