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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 12:32:49