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

# 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 function 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, il est possible de :

- 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(':couleur', "%$couleur%");
    $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, 'couleur' => $couleur));
    /* 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 positionnelles

    <?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 < ? AND couleur = ?');
    $sth->execute(array($calories, $couleur));
    ?>

Exemple #4 Exécute une requête préparée avec des variables liées à 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

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open