如何使用PHP与HTML将MySQL查询返回的数组数据渲染为表格
原代码错误说明
- for循环判断条件逻辑错误:
$i >$num初始值$i=0时条件直接不成立,循环不会执行,应改为$i < count($resultats),无需额外依赖$num变量 - 行号仅赋值未输出:
<th scope="row"><?php $row=$i + 1 ; ?></th>中没有输出逻辑,页面不会显示行号 - 兼容性风险:如果服务器未开启PHP短标签,
<?=语法不会生效,可替换为完整的<?php echo写法
可行实现方案
方案1:修复原有for循环逻辑
<table> <thead> <tr> <th scope="col">序号</th> <th scope="col">Type de sport</th> <th scope="col">Adresse </th> <th scope="col">Ville</th> <th scope="col">code postal</th> </tr> </thead> <tbody> <?php for ($i=0; $i < count($resultats) ; $i++){ ?> <tr> <th scope="row"><?php echo $i + 1 ; ?></th> <td><?php echo $resultats[$i]['type_de_sport']; ?></td> <td><?php echo $resultats[$i]['Adresse']; ?></td> <td><?php echo $resultats[$i]['ville']; ?></td> <td><?php echo $resultats[$i]['code_postal']; ?></td> </tr> <?php } ?> </tbody> </table>
这里直接指定键名输出,避免子数组内部键顺序变化导致表格列错乱的问题。
方案2:更简洁的foreach遍历版本(推荐)
不需要手动计算数组长度,写法更简洁不易出错:
<table> <thead> <tr> <th scope="col">序号</th> <th scope="col">运动类型</th> <th scope="col">地址</th> <th scope="col">城市</th> <th scope="col">邮政编码</th> </tr> </thead> <tbody> <?php foreach ($resultats as $index => $item): ?> <tr> <th scope="row"><?php echo $index + 1; ?></th> <td><?php echo $item['type_de_sport']; ?></td> <td><?php echo $item['Adresse']; ?></td> <td><?php echo $item['ville']; ?></td> <td><?php echo $item['code_postal']; ?></td> </tr> <?php endforeach; ?> </tbody> </table>
用endforeach 语法替代大括号,在HTML混写场景下可读性更高。
内容的提问来源于stack exchange,提问作者student
相关产品推荐
相关产品推荐

