mysql按空格分割搜索字符串并推入查询

时间:2010-10-10 22:51:18

标签: php mysql

搜索查询是:

“product1 prod2 prod4”

我需要制作mysql

SELECT * 
  FROM tableprod 
  WHERE (prod LIKE '%product1%' 
         AND prod LIKE '%prod2%' 
         AND prod LIKE '%prod4%')

使用mysql_real_escape_string作为输入查询......

3 个答案:

答案 0 :(得分:8)

简单的字符串操作:

$terms = explode(' ', $search);

$bits = array();
foreach ($terms as $term) {
    $bits[] = "prod LIKE '%".mysql_real_escape_string($term)."%'";
}

$query = "SELECT * FROM tableprod WHERE (".implode(' AND ', $bits).")";

答案 1 :(得分:1)

如果你能满足这些限制,你最好只使用一个FULLTEXT索引,这样可以省去拆分字符串的麻烦,而且你还可以获得使用基本功能的好处。搜索的布尔运算符(和/或/不)

答案 2 :(得分:1)

没有循环(我总是试图避免循环):

$str = "product1 prod2 prod4";
$sql = "select * from tableprod where (prod like '%" . str_replace( ' ', '%\' AND prod LIKE \'%', $str ) . '%\')';

如果你可能在两个项目之间有多个空格,请使用preg_replace