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

如何提取MySQL存储的JSON格式字段内容并在PHP页面展示

问题原因

你遇到的报错核心来自两个问题:

  1. 自定义拆分函数存在基础语法错误:函数内循环赋值用的变量是$arrayToReturn,但最终返回的是未做任何赋值的$array,导致返回值始终是空数组,自然不存在io16索引
  2. 手动拆分JSON属于冗余操作:你存储的是标准JSON格式字符串,PHP内置的json_decode函数已经可以实现安全、稳定的解析,手动拆分还容易因为值内包含逗号、冒号等特殊字符出现解析错误。

最优修复方案(推荐)

直接抛弃自定义拆分逻辑,使用原生JSON解析方法即可:

<?php
$result = mysql_query("SELECT * FROM gs_objects WHERE imei = '354018115539821' ");
while ($row = mysql_fetch_array($result)) {
    // 第二个参数传true表示将JSON解析为关联数组
    $data = json_decode($row['params'], true);
    echo $row['params'];
    echo "</br>";
    echo $data['io16'];
}
?>

自定义拆分函数的修复方案

如果你需要保留自定义拆分逻辑,需要修正两个问题:变量名不一致、未过滤JSON首尾的大括号:

function populateArrayFromString($string)
{
    // 先去除JSON首尾的大括号
    $string = trim($string, '{}');
    $arrayToReturn = [];
    $pairs = explode(",", $string);
    foreach ($pairs as $pair) {
        list($key, $value) = explode(":", $pair);
        $arrayToReturn[trim($key, '"')] = trim($value, '"');
    }
    // 返回正确的结果变量
    return $arrayToReturn;
}

注意:该自定义方案仅适用于当前JSON值中无逗号、冒号等特殊字符的场景,兼容性和稳定性远低于原生json_decode,非特殊情况不建议使用。

额外建议

你使用的mysql_*系列数据库操作函数已经在PHP5.5版本后被官方废弃,存在兼容性和安全风险,建议更换为mysqli_*系列函数或者PDO扩展操作数据库。

内容的提问来源于stack exchange,提问作者Maggie Ackermann

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:57:02