$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'");
}
}
Run Code Online (Sandbox Code Playgroud)
这有效.也就是说,数据库确实更新了,一切都很酷.
但它会发出警告:
警告:mysqli_fetch_array()期望参数1为mysqli_result,给定布尔值
如果你四处搜索,解释是查询失败 - 因此,它返回FALSE,所以你得到警告.
......但这在我的案例中没有意义.查询没有失败.当我运行这个脚本时,我的数据库就更新了.此外,在使用之前还有一个条件检查结果是否为布尔值mysqli_fetch_array,所以从技术上讲,这个警告应该永远不会发生.
无论如何,问题必须与之相关$result.让我们做:
echo gettype($result);
Run Code Online (Sandbox Code Playgroud)
结果如何
"宾语"
那么,这就解释了为什么它会通过这个条件.但是,这仍然无法解释为什么mysqli_fetch_array坚持这是一个布尔值(因为它不是).
那有什么问题呢?
使用PHP Version 5.3.24和5.4.19进行测试.
您正在$result使用$result循环内UPDATE查询中的新值覆盖SELECT查询中的结果集
while($row = mysqli_fetch_array($result)) {
$result2 = mysqli_query($conn,"UPDATE Players SET Score='$score' WHERE ID='$id'");
}
Run Code Online (Sandbox Code Playgroud)