Exécute une requête préparée

# PDOStatement::execute

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

PDOStatement::execute — Exécute une requête préparée

### Description

public PDOStatement::execute ([ array `$input_parameters` ] ) : bool

Exécute une requête préparée. Si la requête préparée inclut des marqueurs de positionnement, vous pouvez :

- PDOStatement::bindParam() et/ou PDOStatement::bindValue() doit être appelé pour lier des variables ou des valeurs (respectivement) aux marqueurs de paramètres. 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

### Liste de paramètres

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

  Les valeurs multiples ne peuvent pas être liées à un seul paramètre; par exemple, il n'est pas autorisé de lier deux valeurs à un seul paramètre nommé dans une clause IN().

  La liaison de plus de valeurs que spécifié n'est pas possible ; 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.

### Valeurs de retour

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

### Historique

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.

### Exemples

Exemple #1 Exécute une requête préparée avec des variables et valeurs liées

`<?php
/* Exécute une requête préparée en liant des variables et valeurs */
$calories = 150;
$couleur = 'ver';
$sth = $dbh->prepare('SELECT nom, couleur, calories
FROM fruit
WHERE calories < :calories AND couleur LIKE :couleur');
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindValue(':couleur', "%{$couleur}%");
$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);
?>`

### Notes

> Note:

> Quelques drivers nécessitent de fermer le curseur avant d'exécuter la requête suivante.

### Voir aussi

- PDO::prepare() - Prépare une requête à l'exécution et retourne un objet
- PDOStatement::bindParam() - Lie un paramètre à un nom de variable spécifique
- PDOStatement::fetch() - Récupère la ligne suivante d'un jeu de résultats PDO
- PDOStatement::fetchAll() - Retourne un tableau contenant toutes les lignes du jeu d'enregistrements
- PDOStatement::fetchColumn() - Retourne une colonne depuis la ligne suivante d'un jeu de résultats