将数组保存到db但序列化为字符串

时间:2017-06-20 05:19:08

标签: php mysql laravel

我正在将一个数组保存到数组中,但是当我这样做时,数组会从头到尾获取引号

e.g

"[{"id":"1","country":"New Zealand","shipping_rate":"1"},{"id":"2","country":"Australia","shipping_rate":"2"}]"

保存时不应在开头和结尾引用数组,但这种情况正在发生。当我在运输领域检查我的模型时,我试图修剪它,但它说不能,因为它说它是一个数组,所以问题是当它被保存到该字段的数据库时

在保存未加引号

时,数组应该如下所示
[{"id":"1","country":"New Zealand","shipping_rate":"1"},{"id":"2","country":"Australia","shipping_rate":"2"}]

3 个答案:

答案 0 :(得分:5)

mysql不保存数组,它可以保存字符串。保存数组时,设计是将数组序列化为字符串。

如果您使用的是MySql 5.7.8或更高版本,则可以使用JSON数据类型。

https://dev.mysql.com/doc/refman/5.7/en/json.html

答案 1 :(得分:1)

你不能直接在mysql中保存数组会引发异常,你应该用字符串(use json_encode())转换它并将它保存在varachar / text type字段的mysql中。 再次从db获取数据时,将其转换为数组(use json_decode())然后使用它。

答案 2 :(得分:0)

你必须将json字符串转换为数组:

<?php
$json_string= '[{"id":"1","country":"New Zealand","shipping_rate":"1"},{"id":"2","country":"Australia","shipping_rate":"2"}]';
$array = json_decode($json_string,true);
?>

然后用foreach创建一个循环并在foreach中输入一个查询:

<?php
foreach($array as $data){
  $id = $data['id'];
  $country = $data['country'];
  $save= mysql_query("insert into your_database values("$id", "$country")";
 }
?>

我回家帮忙