• 11-07-2009, 08:51:57
    #1
    Sitem için çoklu arama hazırlıyorum, çok çetrefilli birşey. Bir hata verdi, hatanın ne olduğunu bana gösterebilmeniz için kodları aşağıda yazıyorum:

    <?
    			if( !isset( $limit) )$limit=0;
    			$sorgu=mysql_query( "SELECT oykuler.id, oykuler.yayin, oykuler.yazarid, oykuler.turid, oykuler.dilid, yazarlar.ad, diller.ad, turler.ad"
    			. "\n FROM oykuler"
    			. "\n JOIN INNER yazarlar ON oykuler.yazarid = yazarlar.id"
    			. "\n JOIN INNER turler ON oykuler.turid = turler.id"
    			. "\n JOIN INNER diller ON oykuler.dilid = diller.id"
    			. "\n WHERE yazarlar.ad LIKE '% $ara%' OR turler.ad LIKE '% $ara%' OR diller.ad LIKE '% $ara%' AND oykuler.yayin='E' ORDER BY oykuler.id LIMIT $limit,20" , $link);
    				while( $veri = mysql_fetch_array($sorgu) )
    			{
    		?>
    HATA VERDİĞİ SATIR ŞUDUR:
    while( $veri = mysql_fetch_array($sorgu) )
    Şöyle hata veriyor:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /www/oykuler/oyku_ara.php on line 21

    OLASI HATALAR:
    * Veri tabanını buluyor, veri tabanı ayarlarında hata yok.
    * tablo adlarını kesinlikle doğru yazdım.
    * tablolarda veriler yüklenmiş, pekçok veri var.


    PHP 5.2 kullanıyorum
  • 11-07-2009, 09:18:13
    #2
    sanırım sorgun yanlış veriler boş döndüğü için bu hatayı almış olabilirsin

    sorgunun doğru olduğuna eminmisin
  • 11-07-2009, 09:25:04
    #3
    Şu satır şöyle olmalı galiba:
    . "\n WHERE oykuler.yazarid LIKE '% $ara%' OR oykuler.turid LIKE '% $ara%' OR oykuler.dilid LIKE '% $ara%' AND oykuler.yayin='E' ORDER BY oykuler.id LIMIT $limit,20" , $link);
    daha önce burada oykuler.yazarid yerine yazarlar.ad diye yazmıştım, sanırım o şekilde yanlış... Emin değilim ama öyle düşündüm ve değiştirdim.
    HALA AYNI HATAYI VERİYOR
    Sorgunun yanlış olması için nerde hata yapmış olmam lazım, bulamıyorum bir türlü...
  • 11-07-2009, 17:57:44
    #4
    Localde çalışıyorsan sorgunun sonundaki ( , $link) değişkenini kaldır
  • 11-07-2009, 19:00:15
    #5
    Üyeliği durduruldu
    . "\n WHERE yazarlar.ad LIKE '% $ara%' OR turler.ad LIKE '% $ara%' OR diller.ad LIKE '% $ara%' AND oykuler.yayin='E' ORDER BY oykuler.id LIMIT $limit,20" , $link) or die(mysql_error());


    şu satırı şu hale getir, mysql hata verirse görürsün.
  • 11-07-2009, 20:33:34
    #6
    Çok teşekkür ediyorum, öncelikle yeni birşey öğrendiğimi söyleyebilirim.

    AMA SORUN DAHA ÇÖZÜLMEDİ !

    O kodu ekleyince şu hatayı verdi:

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INNER yazarlar ON oykuler.yazarid = yazarlar.id JOIN INNER turler ON oykuler.turid' at line 3

    yani şu 3 satır hata veriyor:

    . "\n JOIN INNER yazarlar ON oykuler.yazarid = yazarlar.id" 
    . "\n JOIN INNER turler ON oykuler.turid = turler.id" 
    . "\n JOIN INNER diller ON oykuler.dilid = diller.id"
    kontrol ettim, veri tabanında bir hata bulamadım, yukarıda yazdığım hata satırının tam olarak ne dediğini de çözemedim.
  • 11-07-2009, 20:51:37
    #7
    JOIN INNER -- > INNER JOIN olarak dene
  • 11-07-2009, 20:57:57
    #8
    Üyeliği durduruldu
    benim bildiğim o inner join dir. join inner değil ama.

    edit: niphell daha önce davranmış
  • 12-07-2009, 12:58:25
    #9
    Teşekkür ederim, bu sorun çözüldü.

    Şimdi farzediyorum ki biri bir yazarın adını yazıp arama yaptı, arama motorum sadece yazarlar arasında öyle biri varsa vermeli.

    Fakat şimdi ben ne ararsam arayayım, arama motorum sitede var olan tüm verileri sıraya diziyor.