$result = mysqli_query($conn,"SELECT * FROM Players");
if ($result !== FALSE) {
while($row = mysqli_fetch_array($result)) {
$result = mysqli_query($conn,"UPDATE Players SET Score='$score' WHERE ID='$id'");
}
}
有效。也就是说,数据库确实已经更新,一切都很酷。
但它会发出警告:
警告:mysqli_fetch_array()期望参数1为mysqli_result, 给定布尔值
如果您四处搜索,则说明查询失败 - 因此,它返回FALSE
,因此您会收到警告。
......但这在我的案例中没有意义。查询未失败。当我运行这个脚本时,我的数据库就更新了。此外,还有一个条件检查,如果结果是之前使用mysqli_fetch_array
的布尔,那么从技术上讲,这个警告永远不会发生在第一位。
无论如何,问题必须是$result
。我们来做:
echo gettype($result);
结果是
“对象”
嗯,这解释了为什么它会通过这个条件。但是,这仍然无法解释为什么mysqli_fetch_array
坚持这是一个布尔值(因为它不是)。
那么问题是什么?
使用PHP 5.3.24和5.4.19进行测试。
答案 0 :(得分:7)
您正在使用来自循环中UPDATE查询的新$result
值覆盖SELECT查询中的结果集$result
while($row = mysqli_fetch_array($result)) {
$result2 = mysqli_query($conn,"UPDATE Players SET Score='$score' WHERE ID='$id'");
}
答案 1 :(得分:1)
$ update结果数组在更新表时不返回任何内容。这就是为什么,当你试图将$ result中的数据提取到$ row时,你在while循环中收到此警告。
答案 2 :(得分:1)
在while循环中使用相同的变量名称' $ result'以前已经使用过的。在循环内更改变量名称。
while($ row = mysqli_fetch_array($ result)){ $ result = mysqli_query($ conn," UPDATE Players SET Score =' $ score' WHERE ID =' $ id'"); }