2011-11-29 81 views
0

我正在使用this autocomplete tutorial执行自动完成搜索。问题出在SQL中,只有当单词顺序排列时,才会显示多个单词的自动完成。自动完成MySQL ssue

例如:快速的棕色狐狸跳过了懒狗。

如果执行搜索quick,它将显示包含quick的所有结果。但是如果我执行搜索quick lazy,它不会显示任何内容。另一方面,如果我搜索quick brown,它将显示上面的句子。

如何以任意顺序为多个单词创建搜索自动完成?

这是SQL:

$sRequest = "SELECT * FROM `table` WHERE `columnname` LIKE '%{$sParam}%' ORDER BY `columnname`"; 
     $aItemInfo = $GLOBALS['MySQL']->getAll($sRequest); 
     foreach ($aItemInfo as $aValues) { 
      echo $aValues['columnname'] . "\n"; 
     } 

回答

1

你应该分裂您的话阵列搜索和建立这样的查询:

SELECT * FROM `table` 
WHERE `columnname` LIKE '%{$sParam1}%' 
    AND `columnname` LIKE '%{$sParam2}%' 
    AND `columnname` LIKE '%{$sParam3}%' 
ORDER BY `columnname`";