(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)
PDOStatement::bindParam — Lie un paramètre à un nom de variable spécifique
$parameter
, mixed &$variable
, int $data_type
= PDO::PARAM_STR
, int $length
= ?
, mixed $driver_options
= ?
) : boolLie 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.
parameter
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é +1 du paramètre.
variable
Nom de la variable PHP à lier au paramètre de la requête SQL.
data_type
Type explicite de données pour le paramètre utilisant la constante
PDO::PARAM_*
constants.
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 data_type
.
length
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.
driver_options
Cette fonction retourne true
en cas de succès ou false
si une erreur survient.
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);
$sth->bindParam(':couleur', $couleur, PDO::PARAM_STR, 12);
$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, 12);
$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");
?>