Partage
  • Partager sur Facebook
  • Partager sur Twitter

[MYSQL] deuxieme requete preparé ne fonctionne pas

Sujet résolu
    24 septembre 2021 à 9:28:54

    Bonjour à tous,

    Je mle permet de poster car je ne comprend pas mon erreur concernant ma deuxieme requete dont voici le code:

    <?php include 'header.php' ?>
    
        <?php 
            $id = $_SESSION['id'];
            $idb = intval($_POST['id']);
    
            $reqann = $conn->prepare("SELECT 
                i.id_immobilier,i.immobilier_titre,i.immobilier_prix, i.immobilier_desc, i.immobilier_visible,
                i.immobilier_photo1,i.immobilier_photo2,i.immobilier_photo3,i.immobilier_photo4,i.immobilier_photo5,i.immobilier_photo6,i.immobilier_photo7,i.immobilier_photo8,
                i.immobilier_adresse,
                v.ville_cp, v.ville,
                c.idCategories,c.Categories_desc
                from immobilier as i
                join villes as v on v.id_villes = i.idx_ville
                join Categories as c on c.idCategories = i.idx_cat
                where idx_utilisateur = ? and id_immobilier = ? ");
            $reqann->bind_param("ii",$id,$idb);
            $reqann->execute();
            $reqann->bind_result($idbs,$titre,$prix,$desc,$visible,$ph1,$ph2,$ph3,$ph4,$ph5,$ph6,$ph7,$ph8,$adresse,$cp,$ville,$idcat,$catdesc);
            $reqann->fetch();
            $reqann->close();
    
            $reccat = $conn->prepare("SELECT idCategories, Categories_desc from Categories");
            $reccat->execute();
            $reccat->bind_result($idcatc,$catdescc);
            $donnecat = $reccat->fetch();
            var_dump($donnecat);
            $reccat->close();

    Ma première fonctionne très bien, la connexion a la db est OK.

    Mais concernant ma seconde requête elle est très simple et me renvoi un bol au lieu d'un tableau.

    la requete a ete testé dans workbench et me donne tous les résultats.

    il n'y a aucune erreur levé( pas de Error, Warnig...).

    Merci d'avance pour votre aide.

    • Partager sur Facebook
    • Partager sur Twitter
      24 septembre 2021 à 10:21:08

      Salut

      Je ne connais pas vraiment mysqli, mais je soupçonne que fetch() utilisé après bind_result() ne retourne qu'un booléen parce que les valeurs sont dans les variables fournies en arguments de bind_result(), non ?

      • Partager sur Facebook
      • Partager sur Twitter
        24 septembre 2021 à 10:31:07

        Salut,

        Comme l'a dit Ymox, fetch renvoie soit un bool ou null (toujours consulter la doc au besoin) https://www.php.net/manual/fr/mysqli-stmt.fetch.php .

        Si tu as autant de résultats (ou 1 ligne), tu as un while pour afficher les variable $idcat et $catdescc. Sinon au besoin l'activation des erreurs mysqli se fait avec mysqli_report

        • Partager sur Facebook
        • Partager sur Twitter
        le bienfait n'est jamais perdu
          24 septembre 2021 à 17:12:23

          Bonsoir à tous,

          J'ai suivi vos conseil et revu la doc et ca fonctionne bien comme ca :

          <?php
          
                                          //******************************** Requete catégories .................................... */
                                          $reccat = $conn->prepare("SELECT idCategories, Categories_desc from Categories");
                                          $reccat->execute();
                                          $reccat->bind_result($idcatresult,$catdescresult);
                                          while($myrow = $reccat->fetch()){ ?>
                                              <option value="<?php echo $idcatresult ?>"><?php echo $catdescresult ?></option>
                                      <?php }
                                      $reccat->close();?>

          Merci beuacoup !!

          • Partager sur Facebook
          • Partager sur Twitter

          [MYSQL] deuxieme requete preparé ne fonctionne pas

          × 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