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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:10:41