【问题标题】:How to save json array in mysql php如何在mysql php中保存json数组
【发布时间】: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) 检查过该变量。你得到了什么?

标签: php mysql codeigniter


【解决方案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
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-25
  • 2018-02-24
  • 2014-03-17
  • 2010-12-31
  • 2014-02-28
相关资源
最近更新 更多