自动完成搜索查询mysql

时间:2013-10-29 20:16:01

标签: php jquery mysql sql autocomplete

我在搜索查询时遇到问题。

我有两列名为'artist'& 'title'。但是对于自动完成功能,我需要一个SQL查询来搜索这些列,而有人正在键入。我知道有一个非常简单的解决方案,其中包括以下内容:

SELECT * FROM music WHERE artist LIKE '%".$term."%' OR title LIKE
'%".$term."%'

$ term = textboxvalue

但是这个查询有几个很大的问题。我们假设艺术家是'DJ Test',标题是'Amazing Test Song'。如果我输入'DJ',它可以正常工作。但是当我输入'DJ Amazing'时。未找到任何搜索结果。显然当然,但我无法弄清楚如何解决它。

但这不是唯一的问题。如果有人输入'DJ Test - Amazing Test Song',则必须忽略“ - ”。

所以我的问题是,当我输入“惊人的DJ测试”之类的东西并仍然回馈我需要的东西时,我的搜索查询是什么样的?

2 个答案:

答案 0 :(得分:0)

尝试这样的事情。

我认为它应该可行,但我还没有测试过。

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

    foreach($terms as $term){

        $query  = SELECT * FROM music WHERE artist LIKE '%".$term."%' OR title LIKE '%".$term."%'

        return $query;

    }

应该有希望的工作

答案 1 :(得分:0)

您必须将搜索字符串拆分为单词,然后将这些单词作为查找条件添加到查询中。

首先制作一个包含搜索字符串中每个单词的数组。

$search  = 'DJ TEST Amazing Test Song';
$search_terms = explode(" ", $search);

然后更改每个搜索词的查询:

foreach($search_terms as $search_term) {
     //append OR to query with $search_term
     $query .= "OR artist LIKE '%".$search_term."%' OR title LIKE '%".$search_term."%'";

}