Partage
  • Partager sur Facebook
  • Partager sur Twitter

error " Call to a member function fetch()"

Sujet résolu
    25 avril 2019 à 11:52:18

    Bonjour,

    je bloque depuis pas mal de temps sur cette erreur:  "Fatal error: Uncaught Error: Call to a member function fetch() on boolean in ..."

    voila mon code:

    echo $_POST['categorie'];
    					$reponse = $bdd->query('SELECT ctid FROM categories WHERE nom='.$_POST['categorie'].'');
    					$donnees = $reponse->fetch();
    					$catid= $donnees['ctid'];

    Le echo $_POST['categorie']; du du début fonctionne tres bien si je rentre jouets dans le formulaire il me marque bien jouets et si a la place de '.$_POST['categorie'].' dans la requête je rentre dirrectement "jouets" et bien ca fonctionne...

    Merci de votre aide.

    • Partager sur Facebook
    • Partager sur Twitter
      25 avril 2019 à 11:54:57

      Ta requête plante parce qu'il manque au moins les quotes pour le SQL pour ta valeur. Et ça te vaudrait une injection SQL => prépare ta requête !

      Et active les erreurs PDO/SQL pour savoir quand et pourquoi ta requête plante.

      -
      Edité par julp 25 avril 2019 à 11:55:36

      • Partager sur Facebook
      • Partager sur Twitter
        25 avril 2019 à 12:41:46

        Merci de votre réponse mais je n'ai pas très bien compris se qu'il fallait que je fasse.

        Je ne vois pas quelle quotes il manque et je ne vois pas bien comment préparer une requête, si a la place de query je met prepare et bien je n'est plus l'erreur mais il ne se passe rien( ma variable de prend pas la valeur) pour moi il faut préparer la requête quand ont veut modifier la base de donne mais pas pour simplement consulter une valeur.

        • Partager sur Facebook
        • Partager sur Twitter
          25 avril 2019 à 12:49:06

          Bonjour,

          Manque de recherche

          La question que vous posez est très fréquente, cela démontre un manque de recherche évident. Internet et ce forum fourmillent de ressources répondant à votre besoin.

          Je vous invite à effectuer de vraies recherches qui sont à la base d'un bon apprentissage…

          Liens conseillés

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            25 avril 2019 à 13:08:20

            J'ai déjà beaucoup chercher mais je n'est pas trouver de réponse j'ai souvent eu cette erreur mais j'ai toujours réussit a la corriger(l'erreur vient du fait que la requête ne trouve pas de valeur.. enfin je crois )Mais la comme je l'est écrit dans mon premier post si je met une valeur précise dans le WHERE de ma requête  comme ça: 

            $reponse = $bdd->query('SELECT ctid FROM categories WHERE nom="jouets"');

            tout se passe comme prévue donc le problème vient probablement de mon '.$_POST['catégorie'].' pourtant quand je fais des "echo .$_POST['categorie']" j'ais bien le "jouets" qui s'affiche je comprend vraiment pas le problème j'ai lue beaucoup de Sujet sur cette erreur mais la je bloque vraiment...

            • Partager sur Facebook
            • Partager sur Twitter
              25 avril 2019 à 13:15:43

              Salut !

              Comme il te l'a déjà été dit : active l'affichage des erreurs de PHP et de PDO, tu perdras moins de temps à corriger au petit bonheur la chance. La FAQ PHP explique comment faire.

              Ensuite, préparer une requête n'est pas à faire uniquement quand on envoie des données en base, mais à chaque fois qu'on utilise une donnée qui provient de l'utilisateur dans une requête, ce qui est bien ton cas ici. Evidemment, une requête préparée se comporte un petit peut différemment que les requêtes "standard" au niveau du code PHP, en cela qu'il y a une étape de plus. Mais un tutoriel à jour devrait là aussi t'aider.

              • Partager sur Facebook
              • Partager sur Twitter
                25 avril 2019 à 13:39:35

                Ok merci vais essayer de faire ça

                sinon l'erreur c’était effectivement les guillemets 

                $reponse = $bdd->query('SELECT ctid FROM categories WHERE nom="'.$_POST['categorie'].'"');

                La ça marche...

                • Partager sur Facebook
                • Partager sur Twitter
                  25 avril 2019 à 15:11:44

                  Problème qui "disparaît" avec les requêtes préparées. Parce que là, si $_POST['categorie'] contient une apostrophe, rebelote…

                  • Partager sur Facebook
                  • Partager sur Twitter

                  error " Call to a member function fetch()"

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown