PHP - 警告:为foreach()提供的参数无效

时间:2012-11-06 01:24:44

标签: php mysql

我无法弄清楚为什么我收到此警告:“警告:为foreach()提供的参数无效”。此代码在本地工作,但当我推送到服务器时,我收到警告。有什么想法吗?

function updateVIfromScores($client_id, $vi__weight_array){
    $vi = 0;
    $sql = "SELECT * FROM client_vulnerability_scores
        WHERE client_id = $client_id";
    $result = mysql_query($sql) or die('query in updateVIfromScores failed:'.mysql_error().'<br/>sql:'.$sql.'<br/>');
    foreach(mysql_fetch_array($result, MYSQLI_ASSOC) as $key => $value){
        $vi += $vi__weight_array{$key} * $value;
    }
    return $vi;
}

3 个答案:

答案 0 :(得分:3)

你的查询可能没有返回任何结果(所以foreach没有在数组上运行),你应该总是在假设有以下内容之前检查是否有结果:

$result = mysql_query($sql)
    or die('query inupdateVIfromScoresfailed:'.mysql_error().'<br/>sql:'.$sql.'<br/>');

if(mysql_num_rows($result)){
    foreach(mysql_fetch_array($result, MYSQLI_ASSOC) as $key => $value){
        $vi += $vi__weight_array{$key} * $value;
    }
}
else{
    // log it or something
}

未经测试的代码,但您希望得到这个想法。

干杯

答案 1 :(得分:0)

尝试此功能

function updateVIfromScores($client_id, $vi__weight_array){
    $vi = 0;
    $sql = "SELECT * FROM client_vulnerability_scores
        WHERE client_id = $client_id";
    $result = mysql_query($sql) or die('query in updateVIfromScores    failed:'.mysql_error().'<br/>sql:'.$sql.'<br/>');

    if (is_array($result))
        foreach(mysql_fetch_array($result, MYSQLI_ASSOC) as $key => $value){
            $vi += $vi__weight_array{$key} * $value;
        }
    }
    return $vi;
}

答案 2 :(得分:0)

在php中回显下面的查询,从浏览器中复制查询并直接在phpmyadmin中对数据库运行,看看它是否返回任何结果:

echo $sql = "SELECT * FROM client_vulnerability_scores WHERE client_id = $client_id";