我有一个mySQL表,人们可以在其中添加他们的名字和兴趣.我想使用某种单词匹配,找到100%匹配或近似匹配.我听说过levenshtein距离,但不知道如何让它循环通过我的桌子.
$input = $_POST["interest"];
$result = mysql_query("SELECT interest_desc FROM interests");
Run Code Online (Sandbox Code Playgroud)
做了一些谷歌搜索,并达到了这一点
function closest($seed, $haystack){
$shortest = -1;
foreach ($haystack as $word){
$lev = levenshtein($seed, $word);
if ($lev == 0) {
$closest = $word; $shortest = 0; break;
}
if ($lev <= $shortest || $shortest < 0) {
$closest = $word; $shortest = $lev;
}
}
return $closest;
}
$array = mysql_fetch_row($result);
$closestmatch = closest($input,$array);
echo $closetmatch;
Run Code Online (Sandbox Code Playgroud) 我试图在数据库表中发布3个不同的信息,但是我得到了一个错误 Column count doesn't match value count at row 1
这是我的数据库表结构:
interestID int(11) auto_increment
name varchar(100)
categoryID int(11)
interest_desc varchar(30)
date timestamp
Run Code Online (Sandbox Code Playgroud)
表格:
<form id="form_design" method="post" action="interesting.php">
<fieldset id="input_1">
<input type="text" id="username" value="name?" />
</fieldset>
<fieldset id="input_2">
<input type="text" id="interest" value="your interest?" />
</fieldset>
<fieldset id="input_3>
<select id="cats">
<option value="">--</option>
<?php
$sql = "SELECT categoryID, category_desc FROM categories "."ORDER BY category_desc"; $rs = mysql_query($sql);
while($row = mysql_fetch_array($rs))
{
echo "<option value=\"".$row['categoryID']."\">".$row['category_desc']."</option>\n "; }
?>
</select>
</fieldset>
<input type="submit" name="submit" value="Submit" …Run Code Online (Sandbox Code Playgroud)