使用 JSON 序列化将二维数组存入数据库:先用 json_encode() 转为字符串,再通过 PDO 或 MySQLi 预处理插入 JSON/TEXT 字段,读取时用 json_decode($json_str, true) 还原为关联数组。

如果您需要将 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 预处理语句可防止 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 同样支持预处理,适用于未启用 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速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号