PHP二维数组转JSON存数据库教程
时间:2026-02-19 17:40:46 164浏览 收藏
本文详细讲解了如何将PHP二维数组安全、高效地存入MySQL数据库,核心方案是利用JSON序列化:通过json_encode()将数组转为标准JSON字符串后插入JSON或TEXT字段,并借助PDO或MySQLi预处理语句防止SQL注入;读取时再用json_decode($json_str, true)精准还原为原始结构的关联数组,全程兼顾兼容性、数据完整性与安全性,是PHP开发者处理复杂数组持久化的实用指南。

如果您需要将 PHP 中的二维数组保存到数据库中,直接存储原始数组结构不可行,必须先将其转换为数据库可接受的字符串格式。JSON 序列化是最常用且兼容性良好的方式,它能完整保留数组的键名、嵌套结构与数据类型。以下是使用 JSON 序列化将二维数组存入 MySQL 数据库的具体操作步骤:
一、准备数据库字段
MySQL 表中需设置一个支持长文本的字段来存储 JSON 字符串,推荐使用 JSON 类型(MySQL 5.7+) 或 TEXT 类型(兼容所有版本)。若选用 JSON 类型,数据库会自动校验格式合法性;若用 TEXT,则需在 PHP 层确保序列化正确。
1、执行 SQL 创建表语句:CREATE TABLE data_store (id INT AUTO_INCREMENT PRIMARY KEY, array_data JSON);
2、若使用旧版 MySQL,改用:CREATE TABLE data_store (id INT AUTO_INCREMENT PRIMARY KEY, array_data TEXT);
二、PHP 中序列化二维数组
使用 json_encode() 将二维数组转换为标准 JSON 字符串。该函数会递归处理嵌套结构,并转义特殊字符,确保入库安全。注意检查返回值是否为 false,以排除编码失败(如含不可序列化对象或非 UTF-8 编码字符串)。
1、定义示例二维数组:$arr = [['name' => '张三', 'age' => 25], ['name' => '李四', 'age' => 30]];
2、执行序列化:$json_str = json_encode($arr, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
3、验证序列化结果:if ($json_str === false) { die('JSON 编码失败:' . json_last_error_msg()); }
三、插入数据库(PDO 方式)
PDO 预处理语句可防止 SQL 注入,同时安全传递 JSON 字符串。绑定参数时使用 PDO::PARAM_STR 类型,确保字符串长度不受限(尤其当 TEXT 或 JSON 字段容量较大时)。
1、建立 PDO 连接并设置错误模式:$pdo = new PDO($dsn, $user, $pass, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
2、准备插入语句:$stmt = $pdo->prepare("INSERT INTO data_store (array_data) VALUES (?)");
3、执行绑定与插入:$stmt->bindValue(1, $json_str, PDO::PARAM_STR); $stmt->execute();
四、插入数据库(MySQLi 面向对象方式)
MySQLi 同样支持预处理,适用于未启用 PDO 的环境。需显式调用 bind_param() 指定参数类型为字符串("s"),并确保传入的是已编码完成的 JSON 字符串。
1、初始化 MySQLi 连接:$mysqli = new mysqli($host, $user, $pass, $db);
2、准备语句:$stmt = $mysqli->prepare("INSERT INTO data_store (array_data) VALUES (?)");
3、绑定并执行:$stmt->bind_param("s", $json_str); $stmt->execute();
五、读取并反序列化还原数组
从数据库取出 JSON 字符串后,必须使用 json_decode() 转回 PHP 数组。第二个参数设为 true 可确保返回关联数组而非对象,与原始二维数组结构一致。
1、查询记录:$result = $pdo->query("SELECT array_data FROM data_store WHERE id = 1");
2、获取 JSON 字符串:$row = $result->fetch(PDO::FETCH_ASSOC); $json_str = $row['array_data'];
3、还原为二维数组:$arr = json_decode($json_str, true);
终于介绍完啦!小伙伴们,这篇关于《PHP二维数组转JSON存数据库教程》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布文章相关知识,快来关注吧!
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
422 收藏
-
249 收藏
-
446 收藏
-
298 收藏
-
442 收藏
-
267 收藏
-
118 收藏
-
290 收藏
-
141 收藏
-
398 收藏
-
281 收藏
-
462 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习