如何将MySQL JSON列数据通过PHP foreach渲染到HTML表格
解决MySQL JSON列数据在HTML表格中格式化展示的问题
核心思路
从数据库取出的sold_data是JSON格式的字符串,需先通过PHP的json_decode()解析为数组,再循环渲染成结构化HTML(嵌套子表格或列表),替代直接输出原始JSON内容。
代码修改方案
方案1:嵌套子表格展示(推荐,结构清晰)
将HTML表格中输出sold_data的<td>代码替换为以下内容:
<td> <?php // 把JSON字符串解析为关联数组,第二个参数true确保转为数组而非对象 $soldRecords = json_decode($user['sold_data'], true); // 处理空数据或JSON解析失败的情况 if (empty($soldRecords)) { echo "无销售记录"; } else { ?> <table border="1" cellpadding="3" cellspacing="0" style="width:100%;"> <thead> <tr> <th>销量</th> <th>买家ID</th> <th>售价</th> <th>日期</th> </tr> </thead> <tbody> <?php foreach ($soldRecords as $record): ?> <tr> <td><?= htmlspecialchars($record['qty_sold']) ?></td> <td><?= htmlspecialchars($record['buyer_id']) ?></td> <td><?= htmlspecialchars($record['sell_price']) ?></td> <td><?= htmlspecialchars(trim($record['date'])) ?></td> </tr> <?php endforeach; ?> </tbody> </table> <?php } ?> </td>
方案2:无序列表展示(轻量简洁)
如果不需要复杂的表格结构,也可以用列表形式展示:
<td> <?php $soldRecords = json_decode($user['sold_data'], true); if (empty($soldRecords)) { echo "无销售记录"; } else { echo "<ul style='margin:0; padding-left:18px;'>"; foreach ($soldRecords as $idx => $record) { echo "<li>"; echo "记录".($idx+1).": 销量{$record['qty_sold']} | 买家ID{$record['buyer_id']} | 售价{$record['sell_price']} | 日期".trim($record['date']); echo "</li>"; } echo "</ul>"; } ?> </td>
关键细节说明
json_decode($user['sold_data'], true):将JSON字符串转为PHP关联数组,方便遍历取值。htmlspecialchars():转义输出内容,防止XSS攻击,同时避免特殊字符导致页面格式错乱。- 空值判断:处理无销售记录或JSON解析失败的场景,避免页面出现报错信息。
内容的提问来源于stack exchange,提问作者Lasha Json
相关产品推荐
相关产品推荐

