Probleme PDO

flaaam Messages postés 3 Date d'inscription vendredi 2 juin 2006 Statut Membre Dernière intervention 13 juin 2006 - 13 juin 2006 à 14:54
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 13 juin 2006 à 17:35
Bonjour à tous :

je viens de créer une classe extends PDO.

Elle a une méthode de connexion qui fait appelle a PDO ainsi que toutes les autres méthodes que je ne vous détaillerai pas.

mon souci vient d'un script que je veux faire et qui est tout simple,
imbriquer 2 requetes, et c'est la que je pense voir la limite de PDO.

Il faut recréer un objet PDO ( et donc refaire la connexion à la base
de données puisque que l'objet PDO se construit qu'à partir d'une
connexion à une base) à chaque nouvelle requete select .


mon script:
$data = new Sql();

$data->connexion($localhost);

      

    $sql = 'select * from options';

    $sql1= 'select * from magasins';

   

    // Ici je tente avec le meme data de créer un autre conteneur $resultat1 de resultat pour ne pas recréer de $data

    $resultat     = $data->query($sql);

    $resultat1     = $data->query($sql1);

   

    $resultat->setFetchMode(PDO::FETCH_OBJ);

   

    // j'imbrique mes 2 requetes

    while ($ligne = $resultat->fetch()){

        while ($ligne2 = $resultat1->fetch()){

            echo 'option :'.$ligne->nom_option.'
'.$ligne2->nom_magasin;

        }

    }

Erreur indiquée :

Fatal error: Call to a member function fetch() on a non-object :

--> je pense que cela veut dire que je ne peut faire le fetch sur
$ligne2 car il faut créer un nouvel objet Sql chose que je ne veux pas
faire .

PDO serat-il deja limité ??? je ne pense pas,

j'aurais juste besoin d'aide pour savoir commen imbriquer 2 voire plusieurs requetes type select

3 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
13 juin 2006 à 15:14
Hello,

le problème vient de la classe.
Je suppose que tu stockes la ressource renvoyée par un Sql::query () dans une propriété membre, et que c'est cette ressource qui est utilisé dans Sql::fetch() (vu que tu ne passes pas la ressource en argument, j'en déduis qu'elle a été stockée dans l'objet).
 Du coup, à ton avis, il se passe quoi ?
Mettons que la propriété soit : Sql::link.
Ben :
   $resultat     = $data->query($sql);
// ici, $date -> link === $data -> query ($sql), c'est à dire la ressource renvoyée par cette requête.
    $resultat1     = $data->query($sql1);
// et ici...tu l'écrases, avec la ressource renvoyée par cette requête. Donc, la ressource renvoyée par la 1ère requête n'existe plus. Normal.
0
flaaam Messages postés 3 Date d'inscription vendredi 2 juin 2006 Statut Membre Dernière intervention 13 juin 2006
13 juin 2006 à 16:11
le souci ne vient pas de la
car mes méthodes query et fetch sont les méthodes de base de PDO ...donc je ne stocke nulle part la ressource de query
c 'est gentil de repondre en tout cas
aurais-tu (auriez vous ) un exemple de plusieurs requetes imbriquées en utilisant PDO ?
je n'ai vu aucune application de cela
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
13 juin 2006 à 17:35
sauf que la classe PDO de php s'appelle...PDO? pas Sql.
Donc, tu passes bien par une classe interméfdiaire.
0
Rejoignez-nous