• 27-05-2023, 04:41:55
    #1
    Call to a member function fetch() on bool in

    satır 260 da hata olduğunu söylüyor;

    while ($row = $sql->fetch(PDO::FETCH_ASSOC)){

    nerde hata yapmış olabilirim yardımcı olabilecek var mı?
  • 27-05-2023, 04:49:47
    #2
    sql sorgusunda hata olabilir ,bu koda bakarak hatayı bulamayız.
  • 27-05-2023, 04:50:56
    #3
    kodun tamamını paylaşırsanız yardımcı olalım
  • 27-05-2023, 04:56:30
    #4
    kod şu şekilde ;

    işin garip tarafı aynı dosya aynı kod farklı hosting firmalarında çalışıyor. mysql versiyonu kaynaklı olabilir mi ? php 7.2 kullanıyorum diğer hosting firmasındada 7.2 kullanıyorum aynı kod aynı yazılım hata döndürmüyor işlem sayfasını sorunsuz açıyor.

    $sql = $db->query("SELECT * FROM groups WHERE modulId = '$modul'");
    while ($z = $sql->fetch(PDO::FETCH_OBJ)){
    $ozellikler.=  '
    <div class="panel panel-default"><div class="panel-heading">'.$z->name_en.'</div><div class="panel-body"><div class="row">';
    $g = $z->Id;
    $sql2 = $db->query("SELECT * FROM prop WHERE modulId = '$modul' and groupId = '$g'");
    while ($x2 = $sql2->fetch(PDO::FETCH_OBJ)){
    if ($_GET['ilanId'] == ""){
    $ozellikler.= '
    <div class="col-xs-12 col-sm-3">
    <div class="form-group">
    <label style="font-weight:normal !important"><input type="checkbox" name="prop_' . $x2->Id . '" value="1"> ' . $x2->name_en . '     </label></div></div>';
    } else {
    $ilanId = $_GET['ilanId'];
    $md = $db->query("SELECT * FROM prop_ilan WHERE (ilanId = '$ilanId' and propId = '$x2->Id')");
    $mdd = $md->fetch(PDO::FETCH_ASSOC);
    
    $ozellikler.= '
    <div class="col-xs-12 col-sm-3">
    <div class="form-group">
    <label style="font-weight:normal !important"><input type="checkbox" name="prop_' . $x2->Id . '" value="1"'; if ($mdd["val"] == 1){ $ozellikler.= ' checked'; } $ozellikler.= '> ' . $x2->name_en . '</label></div></div>';
    }
    }
    $ozellikler.=  '</div></div></div>';
    }
  • 27-05-2023, 05:16:56
    #5
    Kodda hata yok
    $md = $db->query("SELECT * FROM prop_ilan WHERE (ilanId = '$ilanId' and propId = '$x2->Id')");
    buradaki değerleri kontrol etmeniz gerekli.

    ayrıca inner join kullanarak sorgularını kısaltabilirsiniz.
  • 27-05-2023, 05:21:36
    #6
    baguvix adlı üyeden alıntı: mesajı görüntüle
    Kodda hata yok
    $md = $db->query("SELECT * FROM prop_ilan WHERE (ilanId = '$ilanId' and propId = '$x2->Id')");
    buradaki değerleri kontrol etmeniz gerekli.

    ayrıca inner join kullanarak sorgularını kısaltabilirsiniz.
    evet aslında kodda hata yok çünkü farklı farklı linux hosting firmalarında bu kodda hiçbir hata vermiyor. ama nadirende olsa aynı php sürümünü kullandığım x firmada bu kodda hata olduğunu söylüyor.
  • 27-05-2023, 05:24:46
    #7
    Halil84 adlı üyeden alıntı: mesajı görüntüle
    evet aslında kodda hata yok çünkü farklı farklı linux hosting firmalarında bu kodda hiçbir hata vermiyor. ama nadirende olsa aynı php sürümünü kullandığım x firmada bu kodda hata olduğunu söylüyor.
    databasede sorun olabilir tekrar kontrol edin derim buradan daha fazla yardımcı olamıyorum
  • 27-05-2023, 05:26:53
    #8
    Halil84 adlı üyeden alıntı: mesajı görüntüle
    evet aslında kodda hata yok çünkü farklı farklı linux hosting firmalarında bu kodda hiçbir hata vermiyor. ama nadirende olsa aynı php sürümünü kullandığım x firmada bu kodda hata olduğunu söylüyor.
    bazenmariadb sql versiyon farkından kaynaklanan sorunda olabiliyor..
  • 27-05-2023, 08:58:05
    #9
    kodda hata olması illaki yazım hatası olmasını gerektirmez.
    hata mesajı olarak dediği $sql değişkeni boolen olarak dönüyor yani true yada false.
    aynı zamanda boolen in fetch diye elemanı olmaz diyor.

    sonuç olarak $sql değişkeninden dönen değer false ise sonraki $sql->fetch çalışmayacak hata verecektir.
    db sorgunuzdan dönen değer var mı onlara odaklanın. her zaman veri dönmeme durumları var ise de while sql fetch lerinizi if($sql) arasına alın.