【发布时间】:2012-05-15 08:52:14
【问题描述】:
我有一个搜索函数,它应该从 $keywords_search 获取数组中的所有关键字,然后创建正确的 mySQL 语句来获取结果。问题是,当我搜索多个关键字时,似乎只找到与数组中的 LAST 关键字匹配的结果。我做错了什么?
代码如下:
$sr='';
foreach(explode(" ",$keywords_search) as $value){
$sr="a.name LIKE '%".$value."%' AND";
}
$query[] = substr($sr,0,-4);
应该搜索
a.name LIKE '%keyword1%' AND
a.name LIKE '%keyword2%' AND
a.name LIKE '%keyword3%'
var_dump(); for $query 仅显示最后一个关键字的输出,而 var_dump(); $keywords_search 显示所有关键字。
【问题讨论】:
-
小心不要让自己面对一些讨厌的 SQL 注入!另外,考虑将
LIKE语句的所有SQL($sr中的内容)添加到数组中,然后用explode(' AND ', $array_of_sr)分解它们,这样你就不必在最后做丑陋的substr().