2016-03-20 17 views
-1

私のデータベース内で映画を検索する方法を検討中です。検索を1年単位で制限するオプションを追加すると、フィルタリングが決してクエリに追加されなかったように、検索結果が返されます。このクエリをMysqlで直接実行すると、PHPを使用しているときと同じように動作しますが、動作しません。私はここで間違って何をしていますか? SQLに対してPHPが意図したとおりに機能していない検索機能

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

は(名前2016をリリースしたが、それはとにかく、このクエリから返される「ズートピア」と私のデータベース内の映画があります。)

+0

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

+0

@Farkie私はそれが誤字だと思う。 OPは結果が – fusion3k

+0

ありがとう、ありがとう:Pはコピーして貼り付けるときに忘れた – Christopher

答えて

1

あなたは括弧でOR条件をラップする必要があります。

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

(...) 

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

それ以外の場合は、ANDの条件は最後のタイトルのみで評価されます。

+0

ああ、作品!ありがとう、トンfusion3k – Christopher