如何在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数组的主要内容,如果未能解决你的问题,请参考以下文章
PHP从mysql中取出多组数据 如何加入数组中并转成JSON数组