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

PHP+HTML+MySQL表格填充异常:仅首条数据正常显示

解决你的表格记录显示问题

嘿,这个问题我之前踩过坑!大概率是你循环生成表格行的时候,<tr>标签的开闭位置出错了——导致只有第一条记录被正确包裹进表格行,剩下的内容因为找不到对应的<tr>容器,被浏览器自动解析到表格外面去了。

先结合你给出的代码片段,推测你可能的错误写法:

<?php 
session_start(); 
$link = mysqli_connect("localhost", "root", "root") or die(mysqli_error($db)); 
mysqli_select_db($link, "keepers") or die(mysqli_error($link));

$query = "SELECT id, name FROM suppliers";
$result = mysqli_query($link, $query);
?>

<table border="1">
    <tr>
        <th>供应商名称</th>
    </tr>
    <?php
    // 错误逻辑:<tr>只在循环外打开一次
    echo "<tr>";
    while($row = mysqli_fetch_assoc($result)){
        echo "<td><a href='supplier_detail.php?id={$row['id']}'>{$row['name']}</a></td>";
    }
    echo "</tr>";
    ?>
</table>

正确的写法应该是这样:

把<tr>的打开和闭合都放到while循环内部,确保每一条数据库记录都对应一个独立的表格行:

<?php 
session_start(); 
$link = mysqli_connect("localhost", "root", "root") or die(mysqli_error($db)); 
mysqli_select_db($link, "keepers") or die(mysqli_error($link));

$query = "SELECT id, name FROM suppliers";
$result = mysqli_query($link, $query);
?>

<table border="1">
    <thead>
        <tr>
            <th>供应商名称</th>
        </tr>
    </thead>
    <tbody>
        <?php
        if(mysqli_num_rows($result) > 0){
            // 每循环一次就生成一个完整的<tr>
            while($row = mysqli_fetch_assoc($result)){
                echo "<tr>";
                // 用htmlspecialchars转义内容,避免XSS和HTML解析错误
                echo "<td><a href='supplier_detail.php?id={$row['id']}'>" . htmlspecialchars($row['name']) . "</a></td>";
                echo "</tr>";
            }
        } else {
            // 没有数据时显示友好提示
            echo "<tr><td colspan='1'>暂无供应商记录</td></tr>";
        }
        ?>
    </tbody>
</table>

额外优化提醒:

  1. 一定要用htmlspecialchars()转义输出的数据库内容,不然如果供应商名称里包含<、>这类特殊字符,会直接破坏HTML结构,甚至引发XSS安全问题。
  2. 记得处理查询结果为空的情况,避免出现空表格,提升用户体验。
  3. 后续可以尝试用mysqli面向对象写法或PDO,代码会更简洁易维护,也能减少这类语法错误的概率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:49:38