Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 02-09-2009 16:49:37

Kap
Nouveau membre
Date d'inscription: 02-09-2009
Messages: 2

Problème requête delete + problème avec profiler

Bonjour,

J'ai dans mon modèle une méthode permettant d'effacer une ligne de la base en utilisant une clé primaire composite.

D'après la doc, on peut passer un tableau à la méthode delete() de l'objet Zend_Db_Table. Toujours d'après la doc : "Si le paramètre est un tableau, chacun des éléments du tableau sera joint au suivant avec l'opération AND pour former la clause WHERE"

Le code ci dessous devrait donc fonctionner :

Code:

 $data = array(
            'PROD_ID'   => $prodId,
            'DOM_ID' => $domId);
        
        $this->getDbTable('PRODUIT_DOMAINE')->delete($data);

Mais il me renvoi le message suivant :

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '))' at line 1


J'ai donc voulu, pour pouvoir afficher la requête éxécutée, utiliser le Zend_Db_Profiler. J'ai donc rajouté le code suivant dans mon bootStrap :

Code:

$db->getProfiler()->setEnabled(true);
$profileur = $db->getProfiler();
$numQuery=$profileur->getTotalNumQueries();
$LastQuery=$profileur->getLastQueryProfile();
$queryInfos=$LastQuery->getQuery();

Quand je relance mon appli, j'ai un écran blanc, sans message d'erreur, ni rien. A priori, c'est la ligne suivante qui psoe problème :

Code:

$queryInfos=$LastQuery->getQuery();

Des idées ?

Merci d'avance pour votre aide...

Hors ligne

 

#2 02-09-2009 19:44:22

Kap
Nouveau membre
Date d'inscription: 02-09-2009
Messages: 2

Re: Problème requête delete + problème avec profiler

Bon alors, j'ai résolu mon problème concernant la requête delete avec plusieurs conditions dans la clause where. En fait, il ne faut pas un tableau associatif, mais un tableau de string (pour chaque condition). Pour ceux que ça intéresse  :

Code:

 $where = array(
            'PROD_ID = ' . $prodId,
            'DOM_ID = ' . $domId
        );
         
//        fonctionne aussi
//        $where[] = "PROD_ID = $prodId";
//        $where[] = "DOM_ID = $domId";

        
        $this->getDbTable('PRODUIT_DOMAINE')->delete($where);

En revanche, je n'ai toujours pas réussi à faire fonctionner le profiler. S'il y des connaisseurs, je suis preneur...

Merci d'avance...

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