Forum und email

PDO->prepare()

(PHP 5 >= 5.1.0, PECL pdo:0.1-1.0.3)

PDO->prepare() — Prépare une requête à l'exécution et retourne un objet

Description

PDO
PDOStatement prepare ( string $statement [, array $driver_options ] )

Prépare une requête SQL à être exécutée par la méthode PDOStatement->execute(). La requête SQL peut contenir zéro ou plusieurs noms (:name) ou marqueurs (?) pour lesquels les valeurs réelles seront substituées lorsque la requête sera exécutée. Vous ne pouvez pas utiliser les marqueurs nommés et les marqueurs interrogatifs dans une même requête SQL ; choisissez l'un ou l'autre.

Vous devez inclure un marquer avec un nom unique pour chaque valeur que vous souhaitez passer dans la requête lorsque vous appelez PDOStatement->execute(). Vous ne pouvez pas utiliser un marqueur avec deux noms pareils dans une requête préparée. Vous ne pouvez associer plusieurs valeurs à un seul marqueur de nom entrant, par exemple, la clause IN() d'une requête SQL.

Appeler PDO->prepare() et PDOStatement->execute() pour les requêtes qui doivent être exécutées plusieurs fois avec différentes valeurs de paramètres optimisent les performances de votre application en autorisant le driver à négocier coté client et/ou serveur avec le cache des requêtes et les méta-informations, et aident à prévenir les attaques par injection SQL en éliminant le besoin de protéger les paramètres manuellement.

PDO émulera les requêtes préparées / les paramètres liés pour les drivers qui ne le supportent pas nativement, et peut également réécrire les paramètres nommés ou les marqueurs en quelques choses de plus approprié, si le driver supporte un style mais pas l'autre.

Liste de paramètres

statement

Doit être une requête SQL valide pour le serveur de base de données cible.

driver_options

Ce tableau contient une ou plusieurs paires clé=>valeur pour définir les valeurs des attributs pour l'objet PDOStatement que cette méthode retourne. Vous pouvez utiliser ceci pour définir la valeur PDO::ATTR_CURSOR à PDO::CURSOR_SCROLL pour demander un curseur scrollable. Quelques drivers ont des options spécifiques qui peuvent être définies au moment de la préparation.

Valeurs de retour

Si le serveur de base de données prépare avec succès cette requête, PDO->prepare() retourne un objet PDOStatement. Si le serveur de base de données ne réussit pas à préparer la requête, PDO->prepare() retourne FALSE.

Exemples

Example#1 Prépare une requête SQL avec des paramètres nommés

<?php
/* Exécute une requête préparée en passant un tableau de valeurs */
$sql 'SELECT nom, couleur, calories
    FROM fruit
WHERE calories < :calories AND couleur = :couleur'
;
$sth $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(':calories' => 150':couleur' => 'red'));
$red $sth->fetchAll();
$sth->execute(array('calories' => 175'couleur' => 'yellow'));
$yellow $sth->fetchAll();
?>

Example#2 Prépare une requête SQL avec des marqueurs

<?php
/* Exécute une requête préparée en passant un tableau de valeurs */
$sth $dbh->prepare('SELECT nom, couleur, calories
    FROM fruit
    WHERE calories < ? AND couleur = ?'
);
$sth->execute(array(150'rouge'));
$red $sth->fetchAll();
$sth->execute(array(175'jaune'));
$yellow $sth->fetchAll();
?>