PHP - 警告:为foreach提供的无效参数()
我不明白为什么我得到这个警告:“警告:为foreach()提供的无效参数”。此代码在本地工作,但是当我推送到服务器时,我收到警告。任何想法为什么?PHP - 警告:为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
}
未经测试的代码,但你希望得到这个想法。
干杯
是的,查询没有返回任何结果。感谢您的建议!回到绘图板。 – rharrison33
很高兴能帮到你。如果您觉得我的答案是正确的,请点击左上角的复选标记,考虑将其作为正确答案来接受。 – Madbreaks
很高兴接受。谢谢! – rharrison33
试试这个功能
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;
}
回响在php下面的查询,从浏览器中复制查询,并在phpMyAdmin直接对数据库运行,看看它是否返回任何结果:
echo $sql = "SELECT * FROM client_vulnerability_scores WHERE client_id = $client_id";
尝试'var_dump($ result);'在循环之前查看'$ result'的值是什么。 –
'msql_ *'函数中的'MYSQLI_ASSOC'? – Musa
var_dump返回“类型(mysql结果)的资源(6)” – rharrison33