Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Je tente d'améliorer la qualité de mes requetes en passant par zend_db_table_abstract.
$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 :
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
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
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
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):
$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) :
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
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
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
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
Pages: 1