Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
J'utilise de manière intensive les requêtes paramétrées dans mon appli.
J'aimerai à partir de ce code ou $db est une instance Zend_Db_Adapter_Abstract récupéré la requête SQL finale, est-ce possible ?:
$statement = $db->prepare($sql); $statement->execute(array($param1,$param2)); $results = $statement->fetchAll();
merci pour votre aide
Dernière modification par cybercandyman (05-07-2010 10:07:07)
Hors ligne
Non.
Tu peux toutefois activer le profiler Firebug (par exemple) et il t'affichera la requête avec les paramètres à côté.
Hors ligne
Il n'y a pas de requête finale
la requête paramétrée fait partie de SQL
le prépare statment envois au serveur la requête
celui-ci la compile et retourne un id de statment
le client peut alors utiliser cet id pour demander le résultat de la requête avec les valeur de paramètre qu'il fourni
cette solution à été crée pour permettre d'exécuter successivement la même requête avec plusieurs jeux de valeurs
$sql = "SELECT name, firstname FROM user WHERE groupe=':group' AND level=':level'" $statement = $db->prepare($sql); $statement->execute(array(':group' => 'commercial', 'level' => 'manager')); $results = $statement->fetchAll(); ... $statement->execute(array(':group' => 'backoffice', 'level' => 'director')); $results = $statement->fetchAll();
il n'y a donc pas construction d'une requête différente à chaque utilisation.
l'utilisation des statment se fait un peut comme une fonction
class users { $sql = "SELECT name, firstname FROM user WHERE groupe=':group' AND level=':level'" function getByGroupAndLevel($group, $level) { if (! isset(self::statement)) { self::statement = $db->prepare(self::sql); } self::statement->execute(array(':group' => $group, $level, 'level' => $level)); return self::statement->fetchAll(); } } $result = users::getByGroupAndLevel('commercial', 'manager'); ... $result = users::getByGroupAndLevel('backoffice', 'director');
A+JYT
Hors ligne
Merci à vous deux pour ces réponses. a bientôt sur z-f
Cyril
Hors ligne