2016-03-20 15 views
-1

Kullanıcılarım veritabanımda bir film araması yapmanın bir yolu üzerinde çalışıyorum. Aramaları bir yıl ile sınırlama seçeneğini eklediğimde, aramalar, sorguya hiçbir zaman eklenmeyen yıl filtrelemesine benzer şekilde döndürülür. Bu sorguyu doğrudan Mysql'de çalıştırdığımda, PHP'yi kullanırken kullanmam gerektiği gibi çalışır. Burada neyi yanlış yapıyorum? Arama işlevi SQL'e karşı PHP ile yapılmış şekilde tasarlanmadı

include 'connectdatabase.php';  


$searchyear=2018; 
$searchtitles = getpostAJAX("searchtitle"); 
mysql_set_charset('utf8'); 

$temps = explode("*", $searchtitles); 

mysql_set_charset('utf8'); 
$querystring="SELECT title from Movie where title LIKE '%".$temps[0]."%'"; 
$arr_lengths = count($temps); 
for($is=0;$is<$arr_lengths;$is++) 
    { 
     $querystring.= " or title LIKE '%".$temps[$is]."%'"; 
    } 

$querystring.= " and YEAR(release_date) = '".$searchyear."'"; 
$querystring.= ";"; 

$innerresult = mysql_query($querystring); 
if (!$innerresult) err("Login Query Error: ".mysql_error()); 

while ($innerrow = mysql_fetch_assoc($innerresult)) {     
    $output.=" title='".$innerrow['title']."'\n"; 
}  

(isim 2016 serbest bırakır ama neyse bu sorgudan döndürülen alır "Zootopia" ile benim veritabanında bir film var.)

+0

'$ innerresult = mysql_query ($ querystring)' – Farkie

+0

@Farkie Bu bir yazım hatası olduğunu düşünüyorum. OP sonuçları var – fusion3k

+0

oh yea, teşekkürler: Kopyalama ve yapıştırma yaparken P unuttun – Christopher

cevap

1

Sen parantez OR koşulları sarmak zorunda:

#           ↓ 
$querystring="SELECT title from Movie where (title LIKE '%".$temps[0]."%'"; 

(...) 

$querystring.= ") and YEAR(release_date) = '".$searchyear."'"; 
#    ↑ 

Aksi takdirde, AND koşulu yalnızca son başlık için değerlendirilir.

+0

ah, işe yarıyor! Teşekkürler ton fusion3k – Christopher