PHP - 警告:为 foreach() 提供的参数无效 [英] PHP - Warning: Invalid argument supplied for foreach()

查看:63
本文介绍了PHP - 警告:为 foreach() 提供的参数无效的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不明白为什么会收到此警告:警告:为 foreach() 提供的参数无效".这段代码在本地工作,但是当我推送到服务器时,我收到了警告.任何想法为什么?

I can't figure out why I am getting this warning: "Warning: Invalid argument supplied for foreach()". This code works locally, but when I pushed to the server I get the warning. Any ideas why?

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 未对数组进行操作),您应该始终 在假设有结果之前检查是否有结果:

Your query's probably not returning any results (so foreach isn't operating on an array), you should always check to see if there are results before assuming there are:

$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
}

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

Untested code, but you get the idea hopefully.

干杯

这篇关于PHP - 警告:为 foreach() 提供的参数无效的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆