【发布时间】:2012-09-09 04:29:32
【问题描述】:
我目前有一个简单的搜索引擎,它根据用户的输入在我的数据库中搜索列:
$search = $_GET['search'];
$terms = explode(" ", $search);
$sql = "SELECT * FROM people WHERE lname LIKE :search";
$q = $conn->prepare($sql) or die("failed!");
$q->bindValue(':search',"%".$search."%",PDO::PARAM_STR);
$q->execute();
if ($q){
//
do something
}
目前它正在整体搜索术语,例如“red desk”返回结果但“desk red”不返回任何内容
有什么想法吗?非常感谢任何帮助!
编辑:
后来我把它改成了这个……
$search = $_GET['search'];
$terms = explode(" ", $search);
$sql = "SELECT * FROM people WHERE MATCH (lname,fname) AGAINST (:search IN BOOLEAN MODE)";
$q = $conn->prepare($sql) or die("failed!");
$q->bindValue(':search',"%".$search."%",PDO::PARAM_STR);
$q->execute();
目前看来一切正常,如果有人能提出更好的解决方案,我将非常感激!
【问题讨论】:
-
结果
red desk和desk red应该有什么共同点?你期待什么? -
你应该查看 MySQL 的fulltext search。
-
@dbf 感谢您的回复,我希望有时键入desk red 会产生与red desk 相同的结果?我想我的意思是,如果人们输入“desk red”而不是没有结果,它会显示带有单词desk in的所有结果?还是红色?
标签: php mysql search pdo prepared-statement