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

在PHP中解析MySQL列中的JSON字符串并单独输出各字段

解决PHP解析MySQL中JSON字段的问题

直接给你可行的实现步骤和代码:

1. 从数据库获取JSON字段内容

先通过常规SQL查询把INFO列的完整JSON字符串取出来,以下用PDO连接数据库的示例:

// 数据库连接信息,替换成你的实际配置
$host = '数据库地址';
$dbname = '数据库名';
$username = '用户名';
$password = '密码';

try {
    // 初始化PDO连接
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 查询单条数据的INFO列,替换成你的表名
    $stmt = $pdo->query("SELECT INFO FROM 你的表名 LIMIT 1");
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    $jsonStr = $row['INFO'];
} catch(PDOException $e) {
    die("数据库操作失败: " . $e->getMessage());
}

2. 解析JSON字符串并提取字段

用PHP内置的json_decode()函数把JSON字符串转成可操作的结构,两种常用方式:

方式一:转成关联数组(推荐,用数组键访问)

// 第二个参数设为true,返回关联数组
$infoData = json_decode($jsonStr, true);

// 检查解析是否成功,避免JSON格式错误导致报错
if ($infoData === null) {
    die("JSON解析失败: " . json_last_error_msg());
}

// 单独输出各个字段
echo "姓名: " . $infoData['name'] . "<br>";
echo "公司: " . $infoData['company'] . "<br>";
echo "地址: " . $infoData['address'] . "<br>";
echo "邮编: " . $infoData['post_code'] . "<br>";
echo "城市: " . $infoData['city'] . "<br>";
echo "国家: " . $infoData['country'] . "<br>";
echo "电话1: " . $infoData['phone1'] . "<br>";
echo "电话2: " . $infoData['phone2'] . "<br>";
echo "邮箱: " . $infoData['email'] . "<br>";

方式二:转成对象(用对象属性访问)

// 默认返回对象
$infoObj = json_decode($jsonStr);

if ($infoObj === null) {
    die("JSON解析失败: " . json_last_error_msg());
}

// 输出字段,语法换成对象属性
echo "姓名: " . $infoObj->name . "<br>";
echo "公司: " . $infoObj->company . "<br>";
// 其余字段同理替换即可

额外提示

如果你的MySQL版本是5.7及以上,也可以直接在SQL里用JSON函数拆分字段,比如SELECT JSON_EXTRACT(INFO, '$.name') AS name FROM 你的表名,但你需求是在PHP中处理,上面的方法更直接灵活。

内容的提问来源于stack exchange,提问作者Jaco Shutte

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 03:22:06