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

PHP读取MySQL数据并显示到HTML表格时字段为空问题求助

解决PHP读取MySQL数据到HTML表格内容为空的问题

嘿,你已经走对了大半流程——能生成正确数量的字段说明数据库连接和查询都没问题,甚至mysqli_num_rows也检测到了数据,那问题大概率出在没有正确遍历结果集并输出数据上。咱们来修正这个问题:

先分析你代码里的潜在问题

你提到字段数量正确但内容为空,说明你应该只是输出了表格的框架(表头/空行),但没有把查询到的每行数据填充到<td>标签里。另外,最好加上查询失败的错误捕获,方便后续排查问题。

修正后的完整脚本

<?php 
require "init.php"; 
$select = "select * from ScoresTest"; 
$sqlSel = mysqli_query($con, $select); 

// 先捕获查询失败的情况,输出错误信息便于排查
if (!$sqlSel) {
    die("数据库查询失败: " . mysqli_error($con));
}

if(mysqli_num_rows($sqlSel) > 0) { 
    echo "<table border='1'>";
    
    // 自动生成表头:从结果集中获取字段名
    echo "<tr>";
    $fieldInfo = mysqli_fetch_fields($sqlSel);
    foreach ($fieldInfo as $field) {
        echo "<th>" . $field->name . "</th>";
    }
    echo "</tr>";
    
    // 循环遍历每一行数据,填充表格内容
    while ($row = mysqli_fetch_assoc($sqlSel)) {
        echo "<tr>";
        // 遍历当前行的所有字段值
        foreach ($row as $value) {
            // 用htmlspecialchars转义内容,避免XSS和HTML格式问题
            echo "<td>" . htmlspecialchars($value) . "</td>";
        }
        echo "</tr>";
    }
    
    echo "</table>";
} else {
    echo "没有找到任何数据";
}

// 释放结果集并关闭数据库连接(良好的编码习惯)
mysqli_free_result($sqlSel);
mysqli_close($con);
?>

关键改进点说明

  • 错误捕获:增加!$sqlSel的判断,用mysqli_error输出具体错误,万一SQL语句写错能快速定位
  • 动态表头:用mysqli_fetch_fields自动获取表的字段名,不用硬写字段名,适配表结构变化
  • 遍历数据:用while ($row = mysqli_fetch_assoc($sqlSel))循环读取每一行数据,mysqli_fetch_assoc返回的是关联数组,键就是字段名,值是对应的数据
  • 安全输出:用htmlspecialchars转义输出内容,防止用户输入的特殊字符破坏HTML结构,同时避免XSS攻击
  • 资源释放:最后释放结果集和关闭连接,避免数据库资源浪费

如果你不想用自动遍历,也可以手动指定字段名,比如:

while ($row = mysqli_fetch_assoc($sqlSel)) {
    echo "<tr>";
    echo "<td>" . htmlspecialchars($row['id']) . "</td>"; // 替换成你的实际字段名
    echo "<td>" . htmlspecialchars($row['score']) . "</td>";
    echo "</tr>";
}

这种方式更适合你明确知道字段名的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:27:28