Php 搜索数据库并显示结果,即使搜索词拼写错误?
我在页面上有一个搜索功能,当用户在按下submit时键入搜索词时,它会检查数据库并在页面上显示数据库中的适当记录(它使用%Like%查询) 但是,用户可能会拼写错误。无论如何,它仍然可以搜索数据库并显示一些结果。也就是说,颜色存储在数据库中,但是用户搜索颜色-我们是否有任何方法可以更改WHERE子句以确保颜色通过 代码如下: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
//// 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距离”这是一个确定两个字符串相似性的特定算法。如果是这样的话,您仍然需要设置一个阈值,即“足够相似”才能匹配。