搜索栏,用于匹配从搜索栏到数据库列的任何单词的网站

时间:2018-04-17 04:50:55

标签: php

我想为网站创建一个搜索栏,以匹配数据库列(命名标题)中的一个,两个或任何输入字。

例如,如果我输入"我的姓名是来自印度的#34;,我希望与title ="成功匹配我住在印度" (通过" INDIA"的比赛。)

我该如何设计这样的查询?

更多例子:现在,如果我搜索"我喜欢玩#34;然后我的查询只与数据库行匹配"我喜欢每天玩板球"但不是和#34;你就像我的兄弟"。我想把它与行匹配"我喜欢足球比赛"或者"我每天都玩#34;或者"你就像我的兄弟"

<form action="search.php" role="search" method="GET">
     <input type="text" name="searchbox">
     <input type="submit" name="submit" value="search">
</form>
$search = strtolower($_GET['searchbox']);
$search_exploded = explode ( " ", $search );
$construct = '';
foreach( $search_exploded as $search_each ) {
    if(!in_array($search_each, $commonwords)){
        $construct .="AND title LIKE '%$search_each%' ";
    }
}
$construct="SELECT * FROM vdo WHERE 1 $construct LIMIT 60";
$query=mysqli_query($con1,$construct);
while($row=mysqli_fetch_array($query)){
    $title=$row['title'];
    echo $title;
}

1 个答案:

答案 0 :(得分:0)

您想使用MYSQL FULLTEXT_SEARCH方法。

文档: - https://dev.mysql.com/doc/refman/5.7/en/fulltext-search.html

实施例: -

表格

|id|columntosearch|
|2 | You can search any word|
|3 | Yes word is the word|
|4 | fourth row|

MySQL> SELECT * FROM `TABLE` WHERE MATCH(`columntosearch`) AGAINST('word' IN NATURAL LANGUAGE MODE)

<强>输出

|id| columntosearch
|2 | You can search any word
|3 | Yes word is the word