使用 PHP 针对 SQL 制作的搜索功能无法按预期工作


Search function made with PHP against SQL not working as intended

我正在研究一种让用户在我的数据库中搜索电影的方法。当我添加将搜索限制一年的选项时,搜索仍然会返回,就像从未将年份筛选添加到查询中一样。当我直接在 Mysql 中运行此查询时,它的工作方式就像它应该的那样,但在我使用 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 年,但它还是从这个查询中返回。

你必须用括号括起来OR条件:

#                                           ↓
$querystring="SELECT title from Movie where (title LIKE '%".$temps[0]."%'";
(...)
$querystring.= ") and YEAR(release_date) = '".$searchyear."'";
#               ↑

否则,仅针对最后一个标题评估AND条件。