Page 1 sur 1

Affichage d'une requête en utilisant PEAR:DB

Posté : 13 avr. 2007, 16:41
par code3
Bonjour tout le monde,

En faite je travaille sur une application web, et j'utilise php5 et la bibliothèque DB abstraction faite à la bdd, mais comme je suis en locale je me connecte sur une base MySQL. Voilà, J'ai une classe pour ce connecter, et une autre classe pour afficher les utilisateurs.
require "DB.php";
class Connection.php
{
     public $dsn=.......;
     public $options =....;
     public $db=null ;
    
    public function Connection()
    {
          $this->db = DB::connect($this->dsn,$this->options);
        if (DB::isError($this->db)) {
            die ($this->db->getMessage());
        }
    }
   
    public function execQuery($qry)
    {
        $rep =& $this->db->query($qry) ;
        $row = $rep->fetchRow();
        return $row ;
    }
}
 

classe users :
require Connection.php

class Users
{
     public function Users()
     {}
     
     public function getAllUsers()
    {
       $qry = "Select * from users ;" ;
       $data = $conn->execQuery($qry);
       while($data)
      {
           //affichage 
       }
}

le problème est que au niveau de la boucle while ça plante et le µp est occupé à fond. Je ne sais pas où est le problème.

Merci pour votre aide

Posté : 27 avr. 2007, 01:20
par Invité
c'est normal:
public function execQuery($qry)
{
        $rep =& $this->db->query($qry) ; // tu execute une nouvelle requete
        $row = $rep->fetchRow(); // tu recupéré la premiere ligne resultat de ta requetee
        return $row ; // tu retourne la premiere ligne resultat
}
et en fait apres tu boucles tu ta fonction, or a chaque passage de boucle tu recommence a faire ta requete, qui te retourne la premiere et tu recommence tant que ca te retourne une ligne. or comme tu recommence toujours (tu la reexecute en fait), bah ca boucle indéfiniment.

faudrait plutot que tu fasse quelques chose comme ca:
public function execQuery($qry)
{
        $rep =& $this->db->query($qry) ; // tu execute une nouvelle requete
}

pluc function getLigne()
{
        $row = $this->rep->fetchRow(); // tu recupéré la premiere ligne resultat de ta requetee
        return $row ; // tu retourne la premiere ligne resultat
}
...
while( $row = connecxion->getLigne() )
{ // traitement }