Php 搜索数据库并显示结果,即使搜索词拼写错误?

Php 搜索数据库并显示结果,即使搜索词拼写错误?,php,mysql,forms,where-clause,Php,Mysql,Forms,Where Clause,我在页面上有一个搜索功能,当用户在按下submit时键入搜索词时,它会检查数据库并在页面上显示数据库中的适当记录(它使用%Like%查询) 但是,用户可能会拼写错误。无论如何,它仍然可以搜索数据库并显示一些结果。也就是说,颜色存储在数据库中,但是用户搜索颜色-我们是否有任何方法可以更改WHERE子句以确保颜色通过 代码如下: //// Contains the search term from the form $searched_club = $_GET['username'];(form

我在页面上有一个搜索功能,当用户在按下submit时键入搜索词时,它会检查数据库并在页面上显示数据库中的适当记录(它使用%Like%查询)

但是,用户可能会拼写错误。无论如何,它仍然可以搜索数据库并显示一些结果。也就是说,颜色存储在数据库中,但是用户搜索颜色-我们是否有任何方法可以更改WHERE子句以确保颜色通过

代码如下:

//// Contains the search term from the form  
$searched_club = $_GET['username'];(form is a PHP_SELF)

if($searched_club == ''){   
 $sql = "SELECT name, region FROM jos_users ORDER BY id DESC LIMIT 6";
}else{
 $sql = "SELECT name, region FROM jos_users WHERE name LIKE '%$searched_club%'";
}


$rsd = mysql_query($sql, $dbconn);
<table>
 while($rs = mysql_fetch_array($rsd)) {
   $name = $rs['name'];     
   $region = $rs['region'];     

 ?>     
            <tr>
                <td><?php 
                echo $name; 
                ?></td>
                <td><?php 
                echo $region; 
                ?></td>
            </tr>
            <?php
 } 
 ?>             
</table>
///包含表单中的搜索词
$searched_club=$_GET['username'];(表单是PHP_SELF)
如果($U俱乐部==''){
$sql=“选择名称,从jos_用户订单中按id描述限制6选择区域”;
}否则{
$sql=“选择名称,来自jos_用户的区域,其中名称类似“%$searched_club%””;
}
$rsd=mysql\u查询($sql,$dbconn);
而($rs=mysql\u fetch\u数组($rsd)){
$name=$rs['name'];
$region=$rs['region'];
?>     
您可以使用获取表示所提供字符串的一种音频模式的字符串。如果两个字符串不同但听起来相似,则它们应产生相同的
soundex()
结果。字符串如下:

  • 答复
  • 安塞尔
选择
查询中,您可以使用快捷方式
听起来像
来比较两个字符串的
soundex()

SELECT * FROM SomeTable WHERE SomeField SOUNDS LIKE SomeInputValue

对Levenshtein distance进行一些研究。Ok可能重复,因此目前我有以下内容:$sql=“选择名称,来自jos_用户的区域,名称听起来像“%$searched_club%””,但没有显示任何内容?@MikeyBarker:手动查询
SOUNDEX()
检查每个值是否匹配。这不是一个完美的解决方案,如果
SOUNDEX()
不同,仍有可能出现错误。为了更可靠,可以对字符串进行大量比较。例如,对问题的评论建议“Levenshtein距离”这是一个确定两个字符串相似性的特定算法。如果是这样的话,您仍然需要设置一个阈值,即“足够相似”才能匹配。