• 28-11-2012, 15:39:58
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Program indirme sitem var. her program sayfasında sidebarda benzer programlar kısmı var. yani dbden otomatik arama yapıp benzer programlar listeleniyor. kod gayet iyi çalışıyor ama error log dosyasında hep aşağıdaki ileti çıkıyor.

    [26-Nov-2012 07:10:58] PHP Warning:  mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/***/public_html/***.com/trprogram.php on line 201
    Bahsi geçen kod ise şu

    <?  $programtr=$sea['isim'];
     if(eregi(" ",$programtr))
     {
     $kelime=explode(" ",$programtr); 
     $ara=$kelime[0];
     }
     else
     {
     $ara=$programtr;
     }
    $benzer= mysql_query("SELECT * FROM programlar WHERE isim  LIKE '%$ara%' order by id desc limit 15");
     while ( $trcek = mysql_fetch_array($benzer) )
    {
    ?>
    <a href="t<?=$trcek['id']?>/<?=cevir($trcek['isim'])?>.html"><?=$trcek['isim']?></a>
    
    <? } ?>
    bu hatayı nasıl engelleyebilirim?
  • 28-11-2012, 17:42:12
    #2
    SELECT * FROM programlar WHERE isim LIKE '%$ara%' order by id desc limit 15

    sorgu yanlış, sorguyu düzeltmek mi istiyorsunuz yoksa bu hatayı engellemek mi.

    Ona göre değişir çözümler.
  • 28-11-2012, 17:45:12
    #3
    muhtemelen sorgu sonucu boş ya da hatalı dönüyor. şu şekilde hata vermesini önleyebilirsin. sorgu sonucu var ise, ve kayıt sayısı 0'dan fazlaysa ...

    $benzer= mysql_query("SELECT * FROM programlar WHERE isim  LIKE '%$ara%' order by id desc limit 15");
    if ($benzer) {
      $num = mysql_num_rows($benzer);
      if ($num>0) {
      while ( $trcek = mysql_fetch_array($benzer) )
       { 
    ?>
    <a href="t<?=$trcek['id']?>/<?=cevir($trcek['isim'])?>.html"><?=$trcek['isim']?></a>
    
    <? 
        } 
      } 
    }
    ?>
  • 28-11-2012, 18:14:00
    #4
    miscel adlı üyeden alıntı: mesajı görüntüle
    SELECT * FROM programlar WHERE isim LIKE '%$ara%' order by id desc limit 15

    sorgu yanlış, sorguyu düzeltmek mi istiyorsunuz yoksa bu hatayı engellemek mi.

    Ona göre değişir çözümler.
    sorguyu düzeltmek istiyorum.
  • 28-11-2012, 19:28:14
    #5
    SELECT * FROM programlar WHERE isim LIKE '%$ara%' order by id desc limit 15

    programlar tablosu var mı, var ise isim kolonu var mı. Bunları kontrol etmelisiniz.
  • 28-11-2012, 22:32:13
    #6
    mysql_fetch_array fonksiyonuna sokmadan önce mysql_num_rows ile dönen değer var mı diye kontrol yapabilirsiniz. Nitekim, sorgu doğru olabilir ancak sonuç boş dönüyorsa da bu hatayı verir.
  • 29-11-2012, 00:48:22
    #7
    evet sorguda sonuç varsa fetch ile işleme geçebilirsin hata kalmaz o zaman
  • 29-11-2012, 02:13:49
    #8
    Üyeliği durduruldu
    sayfanın en başına

    error_reporting(0);

    eklersen de sorunun çözülür
  • 29-11-2012, 23:06:11
    #9
    bayGaReZ adlı üyeden alıntı: mesajı görüntüle
    mysql_fetch_array fonksiyonuna sokmadan önce mysql_num_rows ile dönen değer var mı diye kontrol yapabilirsiniz. Nitekim, sorgu doğru olabilir ancak sonuç boş dönüyorsa da bu hatayı verir.
    Sorgu yanlış olduğu için mysql_num_rows fonksiyonu da aynı hatayla karşılaşacaktır.
    Çünkü sorgudan dönen FALSE durumudur.

    Ancak sorgu doğru, dönen sonuç boş ve while($result = mysql_fetch_array($query)) gibi bir kullanım var ise while çalışmaz.

    $result = mysql_fetch_array($query); ile alınırsa döngüye girecek $result foreach gibi fonksiyonla kullanılacaksa da foreach $result için bu bir dizi değil işlem yapamam hatası verecektir.