php数据库怎么存入二维数组_php二维数组存库json序列化入库法【教程】

絕刀狂花
发布: 2025-12-19 19:01:02
原创
142人浏览过
使用 JSON 序列化将二维数组存入数据库:先用 json_encode() 转为字符串,再通过 PDO 或 MySQLi 预处理插入 JSON/TEXT 字段,读取时用 json_decode($json_str, true) 还原为关联数组。

php数据库怎么存入二维数组_php二维数组存库json序列化入库法【教程】

如果您需要将 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免费学习笔记(深入)”;

二、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数据库怎么存入二维数组_php二维数组存库json序列化入库法【教程】的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号