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

Langage PHP Discussion :

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


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 299
    Par défaut Call to a member function fetch() on a non-object
    Salut, j'utilise une fonction mais jj'obtient une erreur aidez moi svp...
    l'erreur :
    Fatal error: Call to a member function fetch() on a non-object in /home1/x/public_html/x.php on line 26
    mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $pdo = new PDO('mysql:host=x.x.x;dbname=x', 'x', 'x');
        $req = $pdo->query("SELECT * FROM profil WHERE pseudo=".$pseudo."");
        $res = $req->fetch(PDO::FETCH_ASSOC);
        $req->closeCursor();
        $req = null;
     
        if ($row1 = $req->fetch()) {
    	echo '1';
    	}
    	else{
    	echo '2';
    }
    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    En supposant que $pseudo est une chaine de caractère provenant d'un formulaire, il faut utiliser une requête préparée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     $req = $pdo->prepare('SELECT * FROM profil WHERE pseudo= :pseudo');
    $req->execute(array(':pseudo'=>$pseudo));
    $res = $req->fetch(PDO::FETCH_ASSOC);
    Quand à cette partie la du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ($row1 = $req->fetch()) {
    	echo '1';
    	}
    	else{
    	echo '2';
    }
    Je ne sais pas a quoi elle sert mais elle ne peut pas fonctionner
    1 - tu as pris soin de détruire $req juste avant
    2 - tu ne peux pas faire le fetch plusieurs fois sur le même résultat.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 299
    Par défaut
    Merci,
    $pseudo ne vient pas d'un formulaire
    mon nouveau code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        $pdo = new PDO('mysql:host=x.x.x;dbname=x', 'x', 'x');
        $req = $pdo->query("SELECT * FROM profil WHERE pseudo=".$pseudo."");
     
        if ($row1 = $req->fetch()) {
            //quelque chose
    	}else{
            //quelque chose d'autre
            }
    Erreur sur ligne 5 ...

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 299
    Par défaut
    Ma requête plante. Je sais pas pourquoi, je ne veux pas mettre en place une gestion d'erreur.

    Il n'est pas du tout sensé y avoir une erreur... il y a-t-il un autre moyen de faire ce que je veux? Je souhaite changer de méthode, c'est possible?

    Merci

  5. #5
    Invité
    Invité(e)
    Par défaut
    bonjour,
    tu devrais lire le tuto "comprendre PDO".

    Et "ne pas mettre de gestion d'erreur" est ridicule.
    Surtout en phase de TEST !

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 299
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $pdo = new PDO('mysql:host=x.x.x;dbname=x', 'x', 'x');
        $req = $pdo->query("SELECT * FROM profil WHERE pseudo=".$pseudo."");
        if ($row1 = $req->fetch()) {
            //quelque chose
            }else{
            //quelque chose d'autre
            }
    Sauriez vous m'expliquer ce que fait ce code s'il vous plait, j'ai un doute. merci

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il ne fait rien puisque la requête plante
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT * FROM profil WHERE pseudo=".$pseudo.""
    Ici $pseudo est consideré comme un nom de colonne, ce qui à mon avis ne doit pas être le cas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT * FROM profil WHERE pseudo='".$pseudo."'  "
    Avec 2 apostrophes y a des chances que ca fonctionne mieux

    Comme suggeré : afficher les erreurs ca sert des fois ( même souvent en fait ).

    Faudrait aussi regarder l'histoire des requêtes préparées , au cas ou une apostrophe se glisserait dans $pseudo ...

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    bonjour,
    tu devrais lire le tuto "comprendre PDO".

    Et "ne pas mettre de gestion d'erreur" est ridicule.
    Surtout en phase de TEST !
    => http://fmaz.developpez.com/tutoriels...omprendre-pdo/

  10. #10
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 299
    Par défaut
    Citation Envoyé par To175 Voir le message
    Merci,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        $pdo = new PDO('mysql:host=x.x.x;dbname=x', 'x', 'x');
        $req = $pdo->prepare('SELECT * FROM profil WHERE pseudo= :pseudo');
            $req->execute(array('pseudo' => $pseudo));
     
        if ($row1 = $req->fetch()) {
    	//1
    	}else{
            //2
            }
    je voulais savoir aussi est ce que ce code teste l'existence de l'utilisateur dans la table "profil", si l'utilisateur existe pas on fait 1, sinon on fait 2.
    Est ce que ce code fait ça ou l'inverse ?
    Merci

  11. #11
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Par défaut
    Facile ! Tu fais quelques essais et tu aura la réponse

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Problème de INNER JOIN + Call to a member function fetch() on a non-object in
    Par jlee_xxx dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 05/03/2012, 11h15
  2. [MySQL] Fatal error: Call to a member function fetch() on a non-object
    Par tonnebrre dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/10/2011, 12h46
  3. [SQL-Server] Call to a member function fetch() on a non-object
    Par geo54 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 07/05/2010, 23h05
  4. [PDO] Erreur PDO : Call to a member function fetch() on a non-object
    Par numerodix dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 01/03/2010, 17h37
  5. [PDO] Fatal error: Call to a member function fetch() on a non-object
    Par blopjerem dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/12/2009, 10h53

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