Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 23-10-2012 19:16:40

efreet_cs
Nouveau membre
Date d'inscription: 15-10-2012
Messages: 8

foreach de résultats de requête qui plante ?

Bonjour,

J'ai une erreur palpitante au deuxième foreach du code suivant, que je ne m'explique pas (à placer dans un controller) :

This result is a forward only result set, calling rewind() after moving forward is not supported

Code:

        $sm = $this->getServiceLocator();
        $adapter = $sm->get('Zend\Db\Adapter\Adapter');
        $requete = $adapter->query('SELECT * FROM test');
        $rowset2 = $requete->execute();
        //$rowset2->buffer(); // ne change pas l'erreur
        
        $resultSet = new ResultSet();
        $resultSet->initialize($rowset2);
        
        foreach($resultSet as $row) {
            echo $row->id.'<br/>';
            echo $row->col1.'<br/>';
            echo $row->col2.'<br/>';
        }

        foreach($resultSet as $row) {
            echo $row->id.'<br/>';
            echo $row->col1.'<br/>';
            echo $row->col2.'<br/>';
        }

l'adapter est un PDO MySQL.

Merci d'avance pour vos réponses !

Hors ligne

 

#2 23-10-2012 20:31:18

jfvole
Membre
Date d'inscription: 20-11-2010
Messages: 69

Re: foreach de résultats de requête qui plante ?

Bonsoir,

Les résultats des requêtes SQL ne supportent pas une deuxième boucle.

Il me semble qu'on peut les rembobiner...  avec un rewind.

Hors ligne

 

#3 23-10-2012 23:33:53

efreet_cs
Nouveau membre
Date d'inscription: 15-10-2012
Messages: 8

Re: foreach de résultats de requête qui plante ?

Merci pour cette première réponse, mais impossible d'utiliser le rewind non plus, j'avais déjà tenté sans succès ^^


Précision peut être utile :
Lorsque j'utilise le même procédé mais sur un tableGateWay, il me suffit de faire un "$tableGateWay->setBuffer()" et je peux alors parcourir plusieurs fois les résultats, mais lorsque j'applique le buffer sur l'adapter, cela n'a aucun effet...

Je pense que c'est la manière dont les classes PDO et Adapter ont été implémentées...

Dernière modification par efreet_cs (23-10-2012 23:58:00)

Hors ligne

 

#4 25-10-2012 11:24:02

efreet_cs
Nouveau membre
Date d'inscription: 15-10-2012
Messages: 8

Re: foreach de résultats de requête qui plante ?

Code:

 
        $sm = $this->getServiceLocator();
        $adapter = $sm->get('Zend\Db\Adapter\Adapter');
        $requete = $adapter->query('SELECT * FROM test');
        $rowset2 = $requete->execute();
        //$rowset2->buffer(); // ne change pas l'erreur
 
        $resultSet = new ResultSet();
        $resultSet->initialize($rowset2);
        $resultSet->buffer();  <--------------------
 
        foreach($resultSet as $row) {
            echo $row->id.'<br/>';
            echo $row->col1.'<br/>';
            echo $row->col2.'<br/>';
        }
 
        foreach($resultSet as $row) {
            echo $row->id.'<br/>';
            echo $row->col1.'<br/>';
            echo $row->col2.'<br/>';
        }

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