【问题标题】:why is my php/mysql search string only matching the LAST keyword?为什么我的 php/mysql 搜索字符串只匹配 LAST 关键字?
【发布时间】: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() .

标签: php mysql search foreach


【解决方案1】:

变成这样

$sr='';
foreach(explode(" ",$keywords_search) as $value){

    $sr .= " a.name LIKE '%".$value."%' AND";

}
$query[] = substr($sr,0,-4);

您忘记添加.

【讨论】:

  • 哇,我真笨! :D 当它很小的时候,我正在寻找大问题。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多