mySQL显示为数组

时间:2012-07-04 14:05:41

标签: php mysql arrays levenshtein-distance

我试图让这段代码工作,但是我的生活无法实现......我想要一个显示你的意思的搜索。随着代码,我得到它“你的意思是:数组l:6”我在这里有什么问题?

$my_word = $_REQUEST['value'];
$bestMatch = array('word' => $my_word, 'match' => 2);
$result = mysql_query("SELECT keyword FROM athena");
while ($keyword = mysql_fetch_array($result)) {
    $lev = levenshtein ($keyword, $my_word, 1, 2, 1);
    if (!isset($lowest) || $lev < $lowest) {
       $bestMatch = array('word' => $keyword, 'match' => $lev);
       $lowest = $lev;
     }
 }
 if ($bestMatch['match'] > 0)
   echo 'Did you mean: <strong>'.$bestMatch['word'].'</strong> l:'.$bestMatch['match'];

4 个答案:

答案 0 :(得分:4)

您将整个搜索结果集传递给levenshtein()函数而不是关键字:

while ($row= mysql_fetch_array($result)) {
    $lev = levenshtein ($row['keyword'], $my_word, 1, 2, 1);
    if (!isset($lowest) || $lev < $lowest) {
       $bestMatch = array('word' => $row['keyword'], 'match' => $lev);
       $lowest = $lev;
    }
}

答案 1 :(得分:1)

$ keyword是一个数组(一维),而不是一个列。你应该mysql_fetch_field你想要的列

答案 2 :(得分:0)

<?php
while ($keyword = mysql_fetch_array($result))
?>

$ keyword是一个数组!您的字词位于$ keyword [0]或$ keyword ['keyword']中。 用

替换你的第7行
$bestMatch = array('word' => $keyword['keyword'], 'match' => $lev);

答案 3 :(得分:0)

正如PeeHaajeroen所说,MySQL结果返回一个数组。

将其转出并查看其中的内容

if ($bestMatch['match'] > 0) {
  var_dump($bestMatch['word']);
  echo 'Did you mean: <strong>'.$bestMatch['word'].'</strong> l:'.$bestMatch['match'];
}

很可能还有另一个[],所以这可能会有效:

echo 'Did you mean: <strong>'.$bestMatch['word'][0].'</strong> l:'.$bestMatch['match'];