-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 には使用できるレーベンシュタインなどの関数がいくつかある場合があります。

于 2012-07-04T12:53:19.090 に答える