如何将MySQL数据库单行列多列数据渲染到不同HTML标签
问题核心原因
数据库结果集的指针在第一次while循环遍历后已经移动到末尾,第二次调用mysqli_fetch_assoc时无法再读取到任何数据。你的需求是单行数据的多字段分散渲染,完全不需要写多个循环遍历结果集。
解决方法
一次性把单行数据读取到数组中,后续所有渲染位置直接调用数组内的对应字段即可,修正后代码如下:
<?php // 建议直接指定你需要的10个字段,不要用SELECT *,查询效率更高,也能避免冗余字段 $sql = "SELECT Description, Material, 其他你需要的字段名 FROM Parts LIMIT 1;"; $result = mysqli_query($conn, $sql); // 提前定义存储单条数据的数组 $partData = []; if (mysqli_num_rows($result) > 0) { // 单行数据直接读取一次即可,不需要循环 $partData = mysqli_fetch_assoc($result); } ?> <div class="description"> <h3>Description</h3> <p> <?php echo $partData['Description'] ?? ''; ?> </p> </div> <!-- td标签请放在table->tr的结构内使用,单独写不符合HTML规范 --> <td> <?php echo $partData['Material'] ?? ''; ?> </td> <!-- 其他位置要渲染对应字段直接复用写法即可,比如要渲染Price字段就写<?php echo $partData['Price'] ?? ''; ?> -->
补充说明
- 代码里的
??是PHP7及以上版本支持的空合并运算符,对应字段为空时不会抛出Notice级别的错误,兼容性更好 - 如果你的需求是渲染多条数据,可以先把所有行一次性读取到二维数组中,后续需要遍历的时候直接遍历这个数组即可,不需要反复操作数据库结果集
内容的提问来源于stack exchange,提问作者09jesses
相关产品推荐
相关产品推荐

