IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend Framework PHP Discussion :

[ZF 2.0.3] double foreach sur résultat de requête = bug


Sujet :

Zend Framework PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 11
    Par défaut [ZF 2.0.3] double foreach sur résultat de requête = bug
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
            $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 !

  2. #2
    Membre Expert
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Par défaut
    Bonjour,
    Je n'ai pas de quoi tester en local, mais il semblerait que c'est parce que tu as parcouru entièrement ton resultSet.

    Peux tu essayer, avant ton deuxième foreach:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultSet->getDataSource()->buffer()

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 11
    Par défaut
    Ah, tu m'as mis sur la voie, la bonne réponse était :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
            $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/>';
            }
    Or j'avais appliqué le buffer sur le rowSet à la base... Ah lala !

    Merci


    PS: La question étant, pourquoi le buffer sur un rowset d'un tablegateway permet directement la possibilité de parcourir les résultats sans avoir à passer par un resultSet, alors que l'Adapter lui, doit passer par le resultSet pour que le buffer passe ^^'

  4. #4
    Membre Expert
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Par défaut
    Il me semble que le problème que tu as remonté à était remonté dans la buglist

Discussions similaires

  1. [AC-2010] Erreur 3265 sur résultat de requête avec agrégat
    Par Thugann dans le forum VBA Access
    Réponses: 5
    Dernier message: 25/06/2014, 13h39
  2. Réponses: 3
    Dernier message: 26/02/2014, 16h49
  3. Double concaténation sur résultat de requête
    Par pierre.coudert dans le forum Langage SQL
    Réponses: 7
    Dernier message: 23/07/2008, 04h23
  4. Créer un message d'alerte sur résultat de requête
    Par curt dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 28/02/2008, 10h56
  5. Réponses: 1
    Dernier message: 07/02/2008, 21h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo