PHP Fatal error: Uncaught Error: Call to a member function fetch_object() on boolean in

    • PHP Fatal error: Uncaught Error: Call to a member function fetch_object() on boolean in

      PHP Source Code

      1. unction display_zoeken($query)
      2. {
      3. global $db;
      4. global $uri;
      5. $result = $db->query($query);
      6. $display['thumbnail']='';
      7. $i=0;
      8. $display['thumbnail'] .=' <ul class="search-row" >';
      9. while($row = $result->fetch_object())
      10. {
      11. $urls = detail($row);
      12. $img_src = $row->profile_image =='' ? 'img/no_image_'.$row->gender.'.jpg': $uri.'controller/'.$row->profile_image;
      13. $display['thumbnail'] .= '<li class="listzoek">
      14. <div class="search-user">
      15. <a href="'.$urls.'" class="thumbnail" > <img src="'.$img_src.'" title="dating met '.$row->profile_name.'" > </a>
      16. </div>
      17. <div class="search-content">
      18. <div class="left" style="width:170px;">
      19. <strong><i class="icon-user"></i> '.$row->profile_name.'</strong>
      20. </div>
      21. <div class="left">
      22. <span>'.$row->age.' jaar, uit '.$row->province.'</span>
      23. </div>
      24. <div class="span6" style="margin-left:0px; line-height: 21px;">
      25. '.substr($row->aboutme,0,350).' ..
      26. </div>
      27. </div>
      28. <div class="search-meta">
      29. <a href="'.$urls.'" class="btn btn-small btn-info"><i class="icon-camera"></i> Bekijk profiel</a>
      30. <a href="'.$urls.'" class="btn btn-small btn-success"><i class="icon-envelope"></i> Stuur Bericht </a>
      31. Test
      32. <div class="btn btn-small">'.$row->fotos.' foto(s)</div>
      33. </div>
      34. </li>';
      35. $i++;
      36. }
      37. if ($i == 0)
      38. $display['thumbnail'] .=' <h3> Geen resultaten gevonden! </h3>';
      39. $display['thumbnail'] .=' </ul>';
      40. return $display;
      41. }
      Laat alles zien
      Wanneer op de zoekpagina wil zoeken krijg ik de volgende error PHP Fatal error: Uncaught Error: Call to a member function fetch_object() on boolean in regel 329. Regel 329 is bij mij


      PHP Source Code

      1. $display['thumbnail'] .=' <ul class="search-row" >';
      2. while($row = $result->fetch_object())
      Ik begrijp niet wat er met de error bedoelt word. Kan iemand mij dat misschien uitleggen?

      Alvast bedankt
    • Digi-Expert wrote:

      Ik begrijp niet wat er met de error bedoelt word. Kan iemand mij dat misschien uitleggen?
      Een soortgelijke foutmelding wordt hier uit de doeken gedaan. PHP is eigenlijk best wel superduidelijk wat betreft foutmeldingen. Het is gewoon een kwestie van het kruimelpad volgen. En gewoon woord voor woord lezen wat er staat.

      Volledigheidshalve hier ook een breedsprakige variant van de bovenstaande melding.

      Er staat:

      Digi-Expert wrote:

      PHP Fatal error: Uncaught Error: Call to a member function fetch_object() on boolean in regel 329.
      Oftewel: in eerste optiek gaat er dus iets mis met fetch_object(). Je eerste stap zou dan ook het er bijpakken van de documentatie moeten zijn. De functie/methode verwacht een object van de klasse mysqli_result, maar kreeg in plaats hiervan een Boolse waarde (true of false).

      Conclusie: de code liep dus stuk omdat de parameter niet het juiste type had.

      Nu weten we dus waardoor de fout werd veroorzaakt, en pas vanaf dat moment kun je gaan werken naar een oplossing. Immers, als je niet weet wat er fout gaat, wat ben je dan aan het oplossen?

      Dus, op de plek waar je een mysqli_result-object zou verwachten stond een Boolean. Hoe kan dit? $result was het resultaat van het uitvoeren van de query()-methode. We pakken de documentatie er weer bij. We zijn geïnteresseerd in het resultaat, dit staat in de functie/methode definitie:

      PHP.net wrote:

      Return Values
      Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object. For other successful queries mysqli_query() will return TRUE.
      Oftewel, of de query was geen SELECT-query, in welk geval je ook geen resultaten op kunt halen, ofwel de query was syntactisch incorrect (had niet de juiste vorm) kon niet worden uitgevoerd, bijvoorbeeld omdat deze niet juist was geformatteerd.

      En om dat op te lossen, zou je je query moeten debuggen.

      Het interpreteren van dit soort foutmeldingen omvat dus twee stappen:
      1. lees wat er staat, en loop hier stap voor stap doorheen
      2. Read The Flipping Manual
      Nota Bene: de topicstarter vroeg uitleg over de foutmelding. Wat je vervolgens moet doen om deze foutmelding te doen laten verdwijnen is vers twee. Hiertoe moet je eerst weten wat er precies aan de hand is.

      Post werd 2x aangepast, het laatst door FangorN ().

    • Digi-Expert wrote:

      Ik miste een $db
      Ik heb hier nog even over nagedacht, en ik denk dat dat niet kan kloppen. Als dat namelijk het geval was, dan zou $db->query() in eerste instantie stuk moeten lopen met een foutmelding als "Fatal error: Uncaught Error: Call to a member function query() on something".

      Echter, de code liep vast op fetch_object() met een melding die het sterke vermoeden wekt dat je zoekquery $query (soms, maar mogelijk niet altijd) een onjuist format heeft.

      Daarom blijf ik dus bij mijn eerdere conclusie op grond van de door jouw verschafte code. Misschien was je hier inmiddels mee aan het schuiven geweest, maar als je een foutmelding opgeeft die niet bij een codefragment hoort, of vice versa, dan is het vrijwel onmogelijk om op grond hiervan te zeggen wat er daadwerkelijk mis is...