Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 22-07-2009 14:27:01

yo49
Nouveau membre
Date d'inscription: 16-06-2009
Messages: 8

[Résolu][zend_db][1.7.5] Requete avec "update" et "select" imbriquée

Je tente d'améliorer la qualité de mes requetes en passant par zend_db_table_abstract.

Code:

            $myLien = new TLiaison();
            $where1 = $myLien->getAdapter()
                    ->select()
                    ->from()
                    ->where('id_test = ?', $_SESSION["test"])
                    ->group('id_test')
                    ->having('id_liaison not in (?)', implode(',', $liste));
            
            $data = array (
                'id_test'=>0
            );
                
            $myLien->update($data, $where1);

Je pense que ce code est correct, cependant, une erreur se produit :

Code:

Catchable fatal error: Method Zend_Db_Select::__toString() must return a string value in C:\Program Files\wamp\www\reqmanager\models\ZendFramework-1.7.5\Zend\Db\Adapter\Abstract.php on line 604

On dirait qu'il veux absolument une donnée dans la clause FROM. C'est normalement inutile (j'ai toujours fait sans), pouvez-vous me dire ce qui ne va pas ?

Dernière modification par yo49 (23-07-2009 11:36:21)

Hors ligne

 

#2 22-07-2009 15:10:27

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

Re: [Résolu][zend_db][1.7.5] Requete avec "update" et "select" imbriquée

tu veux faire quoi un select ou un update car je n'ai jamais vu de mic mac des deux de la sorte en SQL ce que tu a écrit correspond à un truc du genre

Code:

UPDATE TLiaison SET 'id_test'=0
WHERE (SELECT *
FROM
WHERE ('id_test'= "La valeur de $_SESSION["test"]")
GROUP BY 'id_test'
HAVING id_liaison not in (.......)
);

je ne suis pas sur que ce soit ce que tu cherche à faire
A+JYT

Hors ligne

 

#3 22-07-2009 15:16:45

yo49
Nouveau membre
Date d'inscription: 16-06-2009
Messages: 8

Re: [Résolu][zend_db][1.7.5] Requete avec "update" et "select" imbriquée

Oui, c'est exactement ça!

J'ai résolu (en partie) le problème. L'adapter semble ne pas être utile (d'après la doc officielle):

Code:

$where1 = $myLien
    ->select()
    ->where('id_test = ?', $_SESSION["test"])
    ->group('id_test')
    ->having('id_liaison not in (?)', implode(',', $liste));

Mais ... une autre erreur (ma table est correcte puisque je l'utilise avec d'autres requetes) :

Code:

exception 'Zend_Db_Statement_Exception' with message 'SQLSTATE[21000]: Cardinality violation: 1241 Operand should contain 1 column(s)' in C:\Program Files\wamp\www\reqmanager\models\ZendFramework-1.7.5\Zend\Db\Statement\Pdo.php:238

Dernière modification par yo49 (22-07-2009 15:17:27)

Hors ligne

 

#4 23-07-2009 09:35:26

yo49
Nouveau membre
Date d'inscription: 16-06-2009
Messages: 8

Re: [Résolu][zend_db][1.7.5] Requete avec "update" et "select" imbriquée

Après recherche, le problème vient de ma base.
En effet, les requêtes imbriquées ou sous-requête dans un update ne sont pas possible sur MySQL...

Cordialement,

Dernière modification par yo49 (23-07-2009 09:37:41)

Hors ligne

 

#5 23-07-2009 10:24:21

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

Re: [Résolu][zend_db][1.7.5] Requete avec "update" et "select" imbriquée

mais de toute façon ta requête est fausse
tu ne peux pas faire
....
WHERE(SELECT ...)
Il faut au moins un champs discriminant
....
WHERE( monCamps in (SELECT maColonne ...))

A+JYT

Hors ligne

 

#6 23-07-2009 11:35:28

yo49
Nouveau membre
Date d'inscription: 16-06-2009
Messages: 8

Re: [Résolu][zend_db][1.7.5] Requete avec "update" et "select" imbriquée

OK !

Donc mon erreur était une erreur d'analyse...
J'ai simplifié en exécutant deux requêtes distinctes. Je m'étais énormément compliqué la vie.

a+
yo49

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