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

使用PHP实现学生信息自动填充表单时mysqli_fetch_assoc报错如何解决

你的报错mysqli_fetch_assoc() expects parameter 1 to be mysqli_result是因为mysqli_query执行失败返回了布尔值false,而非查询结果对象,结合你的代码共有以下几处问题:

  • 数据库连接和查询写法混用了面向对象和过程式两种风格,导致调用逻辑错误
  • 没有添加查询错误判断逻辑,无法定位SQL执行失败的具体原因
  • 单条数据查询不需要使用while循环,且循环内没有把结果赋值到全局作用域,循环结束后HTML中无法读取到$row变量
  • 需确认students表字段名和你取值的字段名是否匹配,比如你SQL里筛选的是Id字段,代码里取student_id,如果字段名不对应也会导致查询报错

修正后的数据库连接代码(Connection.php)

<?php
DEFINE ('DB_User', 'testuser');
DEFINE ('DB_Password', 'abc123*');
DEFINE ('DB_Host', 'localhost');
DEFINE ('DB_Name', 'student');          

// 统一使用面向对象写法
$dbc = new mysqli(DB_Host, DB_User, DB_Password, DB_Name);
if($dbc->connect_errno)
{
    printf("连接数据库失败: %s", $dbc->connect_error);
    exit();
}           
?>

修正后的PHP查询代码

<?php
require_once ('Connection.php');
// 这里的字段名请和实际表字段对应,如果表中id字段名就是student_id,把SQL里的Id改成student_id
$query = "SELECT * from students where Id = 102";
$result = $dbc->query($query);
// 先判断查询是否成功
if (!$result) {
    die("SQL执行错误: " . $dbc->error);
}
// 单条数据直接取一行即可,不需要循环
$row = $result->fetch_assoc();
// 释放查询资源
$result->free();
$dbc->close();
?>

表单代码优化建议

表单原有逻辑可以直接复用,如果对应id的学生数据不存在,$row会为null,取值的时候会报错,建议输入框的value部分改成<?php echo $row ? $row['student_id'] : ''; ?>格式,避免数据不存在时报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:45:05