2011-07-25 55 views
0

我有一个简单的jQuery/PHP自动完成文本框,它可以从mySQL获取匹配结果。在我的情况下,如果一个在DB是需要关于修改mySQL的帮助MATCH AGAINST查询

Brand new iPhone and iPod case 

和$ q是

iph 

文本框不会弹出上述产品的名称,我选择它,直到我写的完整的匹配词。

使用通配符我得到我预期的结果,但是当$ q是

iphone ipod 

我不会得到上述产品的名称。

$q = $_GET["q"]; 
WHERE name LIKE '%$q%' 

我现在拥有的是下面这样,我的问题是,如果有一种方法可以有结果前写完整的单词,也支持iPhone的iPod的问题。

$q = $_GET["q"]; 
$words = explode(" ", $q); 
$all = mysql_real_escape_string(implode(" +",$words)); 
WHERE MATCH (name) AGAINST ('+" . $all . "' IN BOOLEAN MODE) 

回答

0
$all = mysql_real_escape_string(implode("* +",$words)); 


WHERE MATCH (name) AGAINST ('+" . $all . "*' IN BOOLEAN MODE) 
+0

很好,谢谢! – EnexoOnoma

+0

顺便说一句:你可能想要做一个'$ words = array_filter($ words);'以防止人们使用多个空格时的空匹配。 – Wrikken