2016-03-20 7 views
-1

Ich arbeite an einer Möglichkeit für Benutzer, nach einem Film in meiner Datenbank zu suchen. Wenn ich die Option zum Einschränken der Suchvorgänge um ein Jahr hinzufüge, werden die Suchvorgänge immer noch so zurückgegeben, als ob die Jahresfilterung nie zur Abfrage hinzugefügt wurde. Wenn ich diese Abfrage direkt in Mysql ausführen, funktioniert es wie es sollte, aber nicht, wenn ich PHP benutze. Was mache ich hier falsch?Suchfunktion mit PHP gegen SQL funktioniert nicht wie vorgesehen

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"; 
}  

(es gibt einen Film in meiner Datenbank mit dem Namen „Zootopia“, die 2016 veröffentlicht, aber es wird aus dieser Abfrage sowieso zurückgegeben.)

+0

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

+0

@Farkie Ich denke, es ist ein Tippfehler. OP haben Ergebnisse – fusion3k

+0

oh yea, danke: P vergaß es beim Kopieren und Einfügen – Christopher

Antwort

1

Sie haben OR Bedingungen durch Klammern wickeln:

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

(...) 

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

Andernfalls wird Bedingung nur für den letzten Titel ausgewertet.

+0

ah, funktioniert! Danke eine Tonne fusion3k – Christopher

Verwandte Themen