Partage
  • Partager sur Facebook
  • Partager sur Twitter

Requête correcte(avec résultat), retournant false

Sujet résolu
    6 janvier 2018 à 10:08:25

    Bonjour à tous,

          Bon voilà (encore un problème de base de données), je crée actuellement un 'site interactif' avec 4 de mes collègues. M'occupant de toutes la partie PHP du site je gère également la base de données de celui-ci. On souhaiterait intégrer des choix, afin de créer une histoire différente en fonction des choix effectués par l'utilisateur. Le problème que je rencontre est le suivant :

          La requête SQL que j'utilise pour récupérer la référence (donc en quelque sorte l'ID) du choix est correcte puisque je l'ai teste avec phpMyAdmin et elle me renvoie bien la ligne correspondant à ce que j'ai demandé. Seulement en PHP, lorsque je fetch() j'obtiens un booléen à false, indiquant donc un résultat vide. Je ne comprend donc pas pourquoi de l'un à l'autre cela ne fonctionne pas. 

          Je précise que je ne fais pas de boucle tant que puisque je me suis arrangé pour n'avoir qu'un seul résultat par requête. J'utilise la méthode GET mais tous les tests et vérifications sont effectués même si je ne les mets pas ici (aucun rapport avec le sujet).

          Mon code :

            $getRef = $bdd->prepare('SELECT ref FROM reference
                                     WHERE chapitre = :ch AND place =  ;');
    
           $getRef->execute(array('ch' => $_GET['chap'],
                                  'p' => $_GET['plc']));
    
           $donnees = $getRef->fetch();
           if(!$donnees) {
              echo '<script>alert("$donnees n\'obtient aucun résultat");</script>';
              echo '<p>plc donné : ' . $_GET['plc'] . '  chapitre donné = ' . $_GET['chap'] . '</p>';
            }
    
           $reference = $donnees['ref'];
           echo 'ref = ' . $donnees['ref'];
           $getRef->closeCursor();



    -
    Edité par Ble14 6 janvier 2018 à 11:00:59

    • Partager sur Facebook
    • Partager sur Twitter
      6 janvier 2018 à 10:12:24

      Bonjour,

      la requête n'est pas correcte, il manque quelque chose... à la fin :

      SELECT ref FROM referenceWHERE chapitre = :ch AND place =  ;

      • Partager sur Facebook
      • Partager sur Twitter
        6 janvier 2018 à 10:43:36

        Désolé, le copié collé est mal passé voici :| Voici le code bien écrit :

                $getRef = $bdd->prepare('SELECT ref FROM reference
                                         WHERE chapitre = :ch AND place =  ;');
        
               $getRef->execute(array('ch' => $_GET['chap'],
                                      'p' => $_GET['plc']));
        
               $donnees = $getRef->fetch();
               if(!$donnees) {
                  echo '<script>alert("$donnees n\'obtient aucun résultat");</script>';
                  echo '<p>plc donné : ' . $_GET['plc'] . '  chapitre donné = ' . $_GET['chap'] . '</p>';
                }
        
               $reference = $donnees['ref'];
               echo 'ref = ' . $donnees['ref'];
               $getRef->closeCursor();

        EDIT : C'est openclassroom qui lors de l'envoie modifie ça mais à l'emplacement manquant on a bien ": p" (tout attaché)



        -
        Edité par Ble14 6 janvier 2018 à 10:48:01

        • Partager sur Facebook
        • Partager sur Twitter
          6 janvier 2018 à 11:03:51

          Si la requête renvoie "false" il suffit d'activer les erreurs PDO  pour voir ou ça pêche:

          $pdo = new PDO('mysql:host=localhost;dbname=DBNAME', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ));



          • Partager sur Facebook
          • Partager sur Twitter
            6 janvier 2018 à 11:16:43

            Merci c'est vrai que j'avais complètement oublié d'ajouter ça :-°

            Au final le problème venait de la connexion à la bdd ; j'avais mis db='url' au lieu de dbname='url'.
            Problème résolu !

            • Partager sur Facebook
            • Partager sur Twitter

            Requête correcte(avec résultat), retournant false

            × 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