PHP开发MySQL CRUD功能时read.php第41行出现数组偏移访问警告如何解决
错误原因
- 你的表格行渲染代码放在了
while循环外部:mysqli_fetch_assoc()遍历完所有结果集后会返回null结束循环,此时循环外的$rows已经是null值,访问数组下标自然触发该警告 - 现有写法即使规避报错也只能渲染1条数据,无法输出全部学生列表
修复方案
将表格行<tr>的全部代码挪到while循环内部即可,修改后的对应代码段如下:
<tbody> <?php $i = 0; while($rows = mysqli_fetch_assoc($result)){ $i++; ?> <tr> <th scope="row"><?php echo $i; ?></th> <td><?php echo $rows['student_id'];?></td> <td><?php echo $rows['Name']; ?></td> <td><?php echo $rows['DOB']; ?></td> <td><?php echo $rows['sex']; ?></td> <td><?php echo $rows['Class']; ?></td> </tr> <?php } ?> </tbody>
可选优化建议
- 可以在输出字段前加
isset()判断,避免字段不存在的报错 - 数据库查询完成后建议用
mysqli_free_result($result)释放结果集内存 - 上线环境建议关闭PHP错误提示显示,改为写入日志文件避免泄露敏感信息
内容的提问来源于stack exchange,提问作者rithysak korng
相关产品推荐
相关产品推荐

