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

PHP导出MySQL表仅一行正常显示的问题求助

问题分析与修复方案

我一眼就发现你代码里的关键问题啦!问题出在表格闭合标签的位置——你把</tbody>和</table>放到了while循环的内部,这就导致每输出一行数据后,表格就被提前闭合了,后面的自然就跑到表格外面去了。另外还有个小拼写错误:<thread>应该是<thead>,虽然这个不会直接导致显示异常,但也是需要修正的细节。

错误代码的核心问题

你的原代码中,while循环里每次都会执行:

$table .= "</tbody>";
$table .= "</table>";

这意味着第一行数据输出后,表格就已经被完全闭合了,第二行及以后的数据自然就会出现在<table>标签之外,导致你看到的显示异常。

修正后的完整代码

<?php
require('db.php'); 
$sql = "SELECT * FROM `users`;"; 
$table = ""; 
// 注意:这里要使用mysqli_error匹配mysqli扩展,不要用旧的mysql_error
$result = mysqli_query($connection, $sql) or die(mysqli_error($connection)); 

$table = "<table class='table table-hover table-dark'>"; 
$table .= "<thead>"; // 修正拼写错误:thread -> thead
$table .= "<tr>"; 
$fieldsInfo = $result->fetch_fields(); 
foreach($fieldsInfo as $fieldinfo) {
    $table .= "<th scope='col'>{$fieldinfo->name}</th>"; 
}
$table .= "</tr>"; 
$table .= "</thead>"; 
$table .= "<tbody>"; 

// 循环只处理每行数据的<tr>和<td>,不提前闭合tbody和table
while ($row = $result->fetch_assoc()) { 
    $table .= "<tr>"; 
    foreach ($row as $columnValue) { 
        $table .= "<td>$columnValue</td>"; 
    } 
    $table .= "</tr>"; 
}

// 所有行处理完成后,再统一闭合tbody和table
$table .= "</tbody>"; 
$table .= "</table>"; 

echo $table; 
?>

额外实用提示

  1. 错误处理规范:原代码里的die(mysql_error())是旧版mysql扩展的语法,你用的是mysqli扩展,必须改成die(mysqli_error($connection))才能正确捕获错误信息。
  2. 代码格式化习惯:把代码拆分成多行、加上缩进,能让标签嵌套结构更清晰,下次遇到类似问题时更容易快速定位。
  3. 调试小技巧:遇到HTML结构异常时,直接查看页面的源代码(而非仅依赖审查元素),能更直观地看到标签嵌套的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:48:03