我正在研究一种让用户在我的数据库中搜索电影的方法。当我添加将搜索限制一年的选项时,搜索仍然会返回,就像从未将年份筛选添加到查询中一样。当我直接在 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
条件。