PHP查询MySQL仅显示单条数据,求错误排查与修复方案
问题分析与解决方案
问题根源
你遇到的核心问题有两个:
fetch_assoc()的特性限制:$result->fetch_assoc()每次调用只会从结果集中获取单一行数据,你直接把它赋值给$rows,自然只能得到第一条记录。- 调试代码的阻断作用:你加的
print_r($rows); die;会直接终止PHP脚本执行,后面的表格渲染代码根本没有机会运行(这应该是你临时调试用的,调试完成后记得移除)。
修复后的完整代码
<?php // 先检查数据库连接是否成功 $con = mysqli_connect('localhost', 'root', '', 'sanjay'); if (!$con) { die("数据库连接失败: " . mysqli_connect_error()); } ?> <html> <head></head> <body> <div> <h1>User Table</h1> <table border="1"> <!-- 添加border让表格结构更清晰,可选 --> <tr> <th>Id</th> <th>Name</th> <th>Email</th> <th>Password</th> </tr> <?php $query = 'SELECT * FROM registration'; $result = mysqli_query($con, $query); // 检查查询是否成功 if (!$result) { die("查询失败: " . mysqli_error($con)); } // 使用while循环遍历所有结果行 while ($row = $result->fetch_assoc()) { ?> <tr> <td><?php echo $row['id']; ?></td> <td><?php echo $row['name']; ?></td> <td><?php echo $row['email']; ?></td> <td><?php echo $row['password']; ?></td> </tr> <?php } // 释放结果集并关闭连接,养成良好的资源管理习惯 mysqli_free_result($result); mysqli_close($con); ?> </table> </div> </body> </html>
关键修复点说明
- 循环遍历结果集:用
while ($row = $result->fetch_assoc())循环,每次调用fetch_assoc()会自动获取下一行数据,直到结果集为空时退出循环,这样就能展示所有记录了。 - 增加错误处理:添加了数据库连接和查询的错误检查,方便你排查后续可能出现的问题。
- 资源清理:查询完成后释放结果集并关闭数据库连接,避免资源浪费。
内容的提问来源于stack exchange,提问作者sanjay gautam
相关产品推荐
相关产品推荐

