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'$caloriesPDO::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$caloriesPDO::PARAM_INT);
$sth->bindParam(2$couleurPDO::PARAM_STR12);
$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(12163171);
/* Crée une chaîne pour les marqueurs */
$place_holders implode(','array_fill(0count($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