-2

下面的代码给了我一个 foreach 错误。我的代码似乎有什么问题?

 $my_word = $_REQUEST['value'];
$bestMatch = array('word' => $my_word, 'match' => 2);
$result = mysql_query("SELECT keyword FROM keywords");
$storeArray = Array();
foreach ($result as $keyword) {
    $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

3 回答 3

2

替换这个:

foreach ($result as $keyword)

有了这个:

while ($keyword = mysql_fetch_array($result))

mysql_query()只是返回一个资源,你需要实际的结果,所以你也需要使用mysql_fetch_array()

此外,不推荐使用 mysql_* 函数,因此您应该查看 PDO 或 mysqli。

于 2012-07-04T12:50:46.097 回答
0

foreach 需要一个数组。相反,您希望传递查询,请查看mysql-fetch-array以从查询中获取结果数组。

于 2012-07-04T12:51:16.423 回答
0
$result = mysql_query("SELECT keyword FROM keywords");

这将返回您需要使用其他函数处理的资源。例如: http ://us.php.net/mysql_fetch_assoc

检查http://us.php.net/mysql_query

另一方面,MySQL 可能有一些你可以使用的函数,比如 levenshtein。

于 2012-07-04T12:53:19.090 回答