PHP mysqli_fetch_array应该得到一个布尔值

Vol*_*ort 2 php

$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进行测试.

Mar*_*ker 7

您正在$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)