如何使用php和mysql基于一个单词从数据库中获取几乎相同的单词

如何使用php和mysql基于一个单词从数据库中获取几乎相同的单词,php,mysql,Php,Mysql,我需要从数据库中的一个单词中得到几乎相同的单词 例如,我的数据库中有word在线购物 如果我给任何一个词,比如网上商店,网上商店,网上,网上意味着只需要获得网上购物 现在我使用下面的选择代码。但它的工作不好 **SELECT words FROM atab WHERE words LIKE '%".$words."%'** 注意:words-column name,atab-table name,我发现最好的方法是返回部分匹配到用户输入的任何单词。根据相关性对它们进行排序是一件完全不同的事情,

我需要从数据库中的一个单词中得到几乎相同的单词

例如,我的数据库中有word在线购物

如果我给任何一个词,比如网上商店,网上商店,网上网上意味着只需要获得网上购物

现在我使用下面的选择代码。但它的工作不好

**SELECT words FROM atab WHERE words LIKE '%".$words."%'**

注意:words-column name,atab-table name,

我发现最好的方法是返回部分匹配到用户输入的任何单词。根据相关性对它们进行排序是一件完全不同的事情,但让我们从让您的搜索工作至少开始:

对于以下内容,我假设您可以将用户搜索放入名为
$search
的变量中,如下所示:

$search='Online Shopping';
现在,将用户输入拆分为单个单词:

$mSearch=explode(" ", $search);
现在我们有了一个搜索项数组

这样,我们就可以进行合理的搜索查询:

$sql="SELECT words FROM atab WHERE ";
$or="";
foreach($mSearch as $val)
{
    $sql.=$or." words like '%".$val."%'";
    if(!$or)
    {
        $or=" or ";
    }
}
现在将输出一个类似以下内容的SQL:

SELECT words FROM atab WHERE words like '%Online%' or words like '%Shopping%'
您可以在数据库上很好地运行它

完整代码:

<?php

    $search='Online Shopping';
    $mSearch=explode(" ", $search);
    $sql="SELECT words FROM atab WHERE ";
    $or="";
    foreach($mSearch as $val)
    {
        $sql.=$or." words like '%".$val."%'";
        if(!$or)
        {
            $or=" or ";
        }
    }
    echo $sql;
?>

您正在输出的查询似乎是错误的。从atab WHERE中选择单词或类似“%Online%”的单词或类似“%Shopping%”的单词。它里面有“Where or”。《财富》杂志我拒绝了这个编辑,因为只有当
$或
中没有任何内容时,
如果(!$or)
条件才会通过,这是我最初设置的。一旦其中有值,条件将返回false,并且不会输入if。@fortune抱歉,我将代码固定在顶部,而不是底部。我移动
$sql.=$or.“%”之类的词“%”$val.“%”
位于
if
语句上方。很抱歉弄错了。现在它完美了。太好了+1.