Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 02-07-2010 10:38:29

cybercandyman
Membre
Date d'inscription: 07-05-2008
Messages: 22

[Résolu] Requete paramétrée

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 ?:

Code:

$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

 

#2 02-07-2010 10:56:43

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Résolu] Requete paramétrée

Non.

Tu peux toutefois activer le profiler Firebug (par exemple) et il t'affichera la requête avec les paramètres à côté.


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#3 02-07-2010 14:01:14

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: [Résolu] Requete paramétrée

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

Code:

$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

Code:

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

 

#4 05-07-2010 10:06:20

cybercandyman
Membre
Date d'inscription: 07-05-2008
Messages: 22

Re: [Résolu] Requete paramétrée

Merci à vous deux pour ces réponses. a bientôt sur z-f

Cyril

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages