(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)
PDOStatement::execute — Exécute une requête préparée
$input_parameters
] )Exécute une requête préparée. Si la requête préparée inclut des marqueurs de positionnement, vous pouvez :
appeler la fonction PDOStatement::bindParam() pour lier les variables PHP aux marqueurs de positionnement : les variables liées passent leurs valeurs en entrée et reçoivent les valeurs de sortie, s'il y en a, de leurs marqueurs de positionnement respectifs
ou passer un tableau de valeurs de paramètres, uniquement en entrée
input_parameters
Un tableau de valeurs avec autant d'éléments qu'il y a de paramètres à
associer dans la requête SQL qui sera exécutée.
Toutes les valeurs sont traitées comme des constantes
PDO::PARAM_STR
.
Vous ne pouvez pas associer plusieurs valeurs à un seul paramètre; par exemple, vous ne pouvez associer deux valeurs à un paramètre de nom dans une clause IN().
Vous ne pouvez pas associer plus de valeurs que spécifié ; s'il y a plus de clés
dans input_parameters
que dans le code SQL utilisé pour
PDO::prepare(), alors la requête préparée échouera et une
erreur sera levée.
Cette fonction retourne TRUE
en cas de
succès ou FALSE
si une erreur survient.
Version | Description |
---|---|
5.2.0 |
Les clés déclarées dans input_parameters doivent correspondre
à celles déclarées dans le SQL. Avant PHP 5.2.0, ceci était ignoré sans erreur.
|
Exemple #1 Exécute une requête préparée avec des variables liées
<?php
/* Exécute 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écute une requête préparée avec un tableau de valeurs (paramètres de nom)
<?php
/* Exécute une requête préparée en passant un tableau de valeurs */
$calories = 150;
$couleur = 'rouge';
$sth = $dbh->prepare('SELECT nom, couleur, calories
FROM fruit
WHERE calories < :calories AND couleur = :couleur');
$sth->execute(array(':calories' => $calories, ':couleur' => $couleur));
?>
Exemple #3 Exécute une requête préparée avec un tableau de valeurs (marqueurs)
<?php
/* Exécute une requête préparée en passant un tableau de valeurs */
$calories = 150;
$colour = 'rouge';
$sth = $dbh->prepare('SELECT nom, couleur, calories
FROM fruit
WHERE calories < ? AND couleur = ?');
$sth->execute(array($calories, $couleur));
?>
Exemple #4 Exécute une requête préparée avec un marqueur de positionnement
<?php
/* Exécute 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 #5 Exécute une requête préparée en utilisant un tableau pour les clauses IN
<?php
/* Exécute une commande préparée en utilisant un tableau de valeurs pour les clauses IN */
$params = array(1, 21, 63, 171);
/* Crée une chaîne pour les marqueurs */
$place_holders = implode(',', array_fill(0, count($params), '?'));
/*
Ce morceau de code va préparer la requête avec assez de marqueurs pour chaque valeur
du tableau $params. Les valeurs du tableau $params sont ensuite liées aux marqueurs
de la requête préparée lorsque la requête est exécutée. Ce n'est pas la même chose
que d'utiliser la méthode PDOStatement::bindParam() sachant qu'elle impose une
référence vers les valeurs. La méthode PDOStatement::execute() ne fait que lier
par la valeur.
*/
$sth = $dbh->prepare("SELECT id, name FROM contacts WHERE id IN ($place_holders)");
$sth->execute($params);
?>
Note:
Quelques drivers nécessitent de fermer le curseur avant d'exécuter la requête suivante.