You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:mysqli_fetch_assoc()报错——期望参数为mysqli_result却得到布尔值

修复 mysqli_fetch_assoc() 参数错误的问题

这个错误我之前调试代码时也踩过坑,别着急,咱们先搞清楚问题出在哪,再一步步解决!

错误原因解析

当mysqli_query($conn, $sql)执行失败时(比如SQL语法错误、目标表不存在、数据库连接异常),它会返回布尔值false,而不是预期的mysqli_result结果集。这时候你把false传给mysqli_fetch_assoc(),就会触发这个警告:mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given。

具体修复步骤

1. 先验证数据库连接有效性

确保你的$conn是一个正常的mysqli连接对象,在执行查询前可以加个检查:

// 检查数据库连接是否成功
if (!$conn) {
    die("数据库连接失败: " . mysqli_connect_error());
}

2. 执行查询后先判断结果是否合法

在进入循环前,先检查$result是否为false,如果是,输出具体的错误信息,方便你排查问题:

$sql = "SELECT * FROM blogs"; // 建议去掉SQL末尾的分号,避免不必要的语法问题
$result = mysqli_query($conn, $sql);

// 检查查询是否执行成功
if (!$result) {
    die("查询失败,错误信息: " . mysqli_error($conn));
}

3. 修正循环内的输出语法

你的原代码里echo(':') . "<br>";的写法有问题,.是字符串连接符,但这里你把echo的结果和<br>连接不会生效,应该改成直接输出:

while ($row = mysqli_fetch_assoc($result)) {
    echo "<div id='message'>";
    echo $row['author'];
    echo ': <br>';
    echo $row['post'] . "</div>...";
}

4. (可选)释放资源

查询完成后,记得释放结果集和关闭数据库连接,养成良好的代码习惯:

// 释放结果集资源
mysqli_free_result($result);
// 关闭数据库连接
mysqli_close($conn);

额外排查要点

  • 打开XAMPP的phpMyAdmin,确认你的数据库中确实存在blogs表,且表内有author和post字段(拼写要完全一致,注意大小写)
  • 检查执行查询的数据库用户是否拥有blogs表的查询权限
  • 如果是Linux服务器环境,注意表名是大小写敏感的,确保blogs的大小写和数据库中的一致

内容的提问来源于stack exchange,提问作者Alexander Rayner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:02:40