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

标签 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;
}

最佳答案

您的查询可能未返回任何结果(因此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
}


未经测试的代码,但您有希望。

干杯

关于php - PHP-警告:为foreach()提供了无效的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13243080/

相关文章:

javascript - 使用 filter() 从 DOM 中删除元素时遇到一些问题

MySQL 触发器 - 获取 json 字段的新旧值之间的差异

mysql - 选择月份位于开始日期和结束日期之间的行的更好方法

MySQL 选择日期介于

mysql - 连续从linux中的FIFO管道将数据插入mysql表数据

php - 更有效地验证 PHP 文件的语法

PHP move_uploaded_file() 问题

php - 为什么 "-8+etch15"附加到该客户的 PHP 版本字符串中?

php - CMB2 可重复组显示

php - 拉维尔 4 : How to Change Laravel getQueryLog to complete SQL command