如何在PHP中解码MySQL存储的JSON值并展示在表格中
解码MySQL存储的JSON数据并展示到表格
没问题,我帮你把解码MySQL中存储的JSON数据并展示到HTML表格的代码梳理清楚。你已经完成了数据库查询的部分,接下来只需要处理category_options这个JSON字段,把它解析后合理展示在表格里就行。
完整代码示例
<?php // 假设$con已经是初始化好的MySQL连接对象 $sql = "SELECT `coc_id`, `cc_id`, `category_options` FROM `ag_category_option_combos` WHERE coc_id='831'"; $result = $con->query($sql); ?> <!-- HTML表格结构 --> <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>COC ID</th> <th>CC ID</th> <th>Category Options</th> </tr> </thead> <tbody> <?php if ($result->num_rows > 0): ?> <?php while ($row = $result->fetch_assoc()): ?> <tr> <!-- 输出基础字段,用htmlspecialchars转义防止XSS --> <td><?php echo htmlspecialchars($row['coc_id']); ?></td> <td><?php echo htmlspecialchars($row['cc_id']); ?></td> <td> <?php // 解码JSON为关联数组 $categoryOptions = json_decode($row['category_options'], true); // 检查JSON解码是否成功 if (json_last_error() === JSON_ERROR_NONE): // 如果解码结果是数组,循环展示键值对 if (is_array($categoryOptions)): echo "<ul style='margin:0; padding-left:20px;'>"; foreach ($categoryOptions as $key => $value): echo "<li><strong>" . htmlspecialchars($key) . ":</strong> " . htmlspecialchars($value) . "</li>"; endforeach; echo "</ul>"; else: // 如果不是数组,直接展示原始值 echo htmlspecialchars($categoryOptions); endif; else: // 解码失败时的友好提示 echo "<span style='color:red;'>Invalid options data</span>"; endif; ?> </td> </tr> <?php endwhile; ?> <?php else: ?> <tr> <td colspan="3" style="text-align:center;">No matching records found</td> </tr> <?php endif; ?> </tbody> </table> <?php // 清理资源 $result->close(); $con->close(); ?>
关键细节说明
- XSS防护:所有输出到HTML的内容都用
htmlspecialchars()转义,避免特殊字符破坏页面结构或引发安全问题。 - JSON解码校验:通过
json_last_error()检查解码状态,防止数据库中存储的JSON格式错误导致页面报错。 - 灵活适配结构:如果你的
category_options是多维数组或其他特殊结构,只需要修改数组遍历的逻辑即可,比如嵌套循环处理多层数据。
内容的提问来源于stack exchange,提问作者Emil K
相关产品推荐
相关产品推荐

