我无法弄清楚为什么我收到此警告:“警告:为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;
}
答案 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";