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

求助:无法定位mysqli_fetch_assoc()参数错误原因,附相关代码

解决mysqli_fetch_assoc()的布尔值参数错误问题

让我来帮你拆解这个问题——你遇到的mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, bool given警告,核心原因是你传给mysqli_fetch_assoc()的不是合法的MySQL查询结果集,而是布尔值false(说明你的SQL查询执行失败了)。咱们从你的代码里揪出几个关键问题:

1. 连接检查的变量名写错了

你用$con = mysqli_connect(...)创建了连接对象,但后面判断连接失败时,写的是$conn->connect_error——这里的$conn是个未定义的变量!正确的应该是用$con->connect_error,不然连接真的失败时,你连错误信息都看不到,还可能掩盖底层的连接问题。

2. 查询结果的判断是赋值而非比较

你写的if ($result = true)是把true赋值给$result,这行代码永远会返回true,不管你的SQL查询有没有成功执行。哪怕查询失败返回了false,这行赋值操作会把$result改成true,然后你还是会进入循环去调用mysqli_fetch_assoc(),自然就触发了警告。

正确的判断方式应该是直接检查$result是否为有效结果集:

if ($result) {
    // 处理结果
}

3. 额外的优化建议

  • 排查查询失败的具体原因:可以在else分支里输出MySQL的错误信息,比如echo "查询失败: " . mysqli_error($con);,这样能快速知道SQL语句是不是有拼写错误(比如表名、字段名写错)。
  • 绝对不要硬编码账号密码到SQL里:实际开发中一定要用预处理语句,避免SQL注入风险,哪怕是测试代码也最好养成好习惯。

修正后的完整代码示例

<?php
$servername = "localhost";
$username = "roo";
$password = "Tri";
$dbname = "frika";

$con = mysqli_connect($servername, $username, $password, $dbname);

// 检查连接(修正变量名)
if ($con->connect_error) {
    die("Connection failed: " . $con->connect_error);
} else {
    $query = "SELECT * FROM admin_users WHERE username = 'alex' and psw ='1234'";
    $result = mysqli_query($con, $query);
    
    // 正确判断查询结果
    if ($result) {
        while ($row = mysqli_fetch_assoc($result)) {
            echo $row['id'];
        }
        // 记得释放结果集
        mysqli_free_result($result);
    } else {
        // 输出具体错误信息方便排查
        echo "查询失败或无结果: " . mysqli_error($con);
    }
}

// 关闭连接
mysqli_close($con);
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 11:13:14