如何在mysql php中保存json数组

Posted

技术标签:

【中文标题】如何在mysql php中保存json数组【英文标题】:How to save json array in mysql php 【发布时间】:2022-01-14 11:57:27 【问题描述】:

我正在尝试将 json 数组保存在 mysql 中,但出现错误。首先,我试图将其保存为字符串 使用内爆函数。但是在获取数据时没有得到相同的字符串。现在尝试按原样保存 json 字符串。这样我就可以轻松获取它。这是 json 字符串

"us_id":"1","stu_id":"6","class_id":"3","req_x":[
   "u_id":"1", "u_details":"testing user", "charges":"12.50",
   "u_id":"2", "u_details":"testing user 2", "charges":"10.50" ,
   "u_id":"3", "u_details":"testing user 3", "charges":"9.50" 
]

我需要将 req_x 字段保存在 db 的 diff 列中

$req_x = '[
   "u_id":"1", "u_details":"testing user", "charges":"12.50",
   "u_id":"2", "u_details":"testing user 2", "charges":"10.50" ,
   "u_id":"3", "u_details":"testing user 3", "charges":"9.50" 
]';

这是使用 implode 保存 json 字符串的代码

$req_dets= implode("&",array_map(function($a) return implode("|",$a);,$req_x));

现在我试图简单地保存它

json_decode($req_x)

但它不起作用。返回错误 json_decode() 期望参数 1 是给定的字符串数组

【问题讨论】:

您是否使用 dd($req_x) 检查过该变量。你得到了什么? 【参考方案1】:

如果你从这个 JSONstring 开始

$start = 
'   "us_id":"1",
    "stu_id":"6",
    "class_id":"3",
    "req_x":[
                 "u_id":"1", "u_details":"testing user", "charges":"12.50",
                 "u_id":"2", "u_details":"testing user 2", "charges":"10.50" ,
                 "u_id":"3", "u_details":"testing user 3", "charges":"9.50" 
            ]
';

而您只想将req_x 数组保存到数据库中......

$obj = json_decode($start);
$arr = $obj->req_x;
// make a json string of that
$json_req_x = json_encode($arr);

echo $json_req_x;

RESULT 是一个 JSONString

[
    "u_id":"1","u_details":"testing user","charges":"12.50",
    "u_id":"2","u_details":"testing user 2","charges":"10.50",
    "u_id":"3","u_details":"testing user 3","charges":"9.50"
]

现在您可以像处理任何其他列一样使用 INSERT 或 UPDATE 将字符串 $json_req_x 放入数据库中。

【讨论】:

是的,它正在保存,但是当我获取数据时,它在每列之前和之后显示斜线,例如 /"u_id/":/"1/",/"u_details/":/"testing user/" ,"/charges/":/"12.50/"【参考方案2】:

该列的数据类型是什么?要存储 JSON 数据,请尝试将列数据类型更改为 JSON。

【讨论】:

分享您的代码以更好地解释您的解决方案 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于如何在mysql php中保存json数组的主要内容,如果未能解决你的问题,请参考以下文章

如何将此json数组保存到MYSQL数据库

PHP从mysql中取出多组数据 如何加入数组中并转成JSON数组

保存后MYSQL JSON列更改数组顺序

Chart.js 数据数组使用 PHP、MySQL。如何从 JSON 数组定义数据源?

如何在 PHP 中获取 JSON 数组并打印其值?

在 PHP 中访问 JSON 数组并发送到 MySQL SELECT