# PDOStatement::execute

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

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

### Description

public PDOStatement::execute(?array `$params` = `null`): 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

`params`

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

### 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é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);
/* Les noms peuvent aussi être préfixés par des deux-points ":" (facultatif) */
$sth->bindValue(':colour', "%$colour%");
$sth->execute();
?>`

Exemple #2 Exécute une requête préparée avec un tableau de valeurs nommées

`<?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, 'colour' => $colour));
/* Les clés du tableau peuvent aussi être préfixées par des deux-points ":" (facultatif) */
$sth->execute(array(':calories' => $calories, ':couleur' => $couleur));
?>`

Exemple #3 Exécute une requête préparée avec un tableau de valeurs positionnels

`<?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 des variables lié à 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 = '?' . str_repeat(', ?', count($params) - 1);
/*
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() - Récupère les lignes restantes d'un ensemble de résultats
- PDOStatement::fetchColumn() - Retourne une colonne depuis la ligne suivante d'un jeu de résultats