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