我有两条记录
num | choice | name
--------------------
1 | A | Jen
2 | C | Jhon
---------------------
我的结果json如下所示
"{"1":"A, Jen","2":"C, Jhon"}"
如何从json中创建在Codeigniter中保存数据?
谢谢
答案 0 :(得分:3)
使用json_decode()
将其设置为数组以进行保存。
例如,要将json保存在数据库中,请使用:
$data_array = json_decode($json_data, true); // the "true" parameter makes it an associative array instead of object
// possible data modeling here...
$this->db->insert('table_name', $data_array);
当然你可能想要为db insert循环数组,如:
$data_array = json_decode($json_data, true);
foreach ($data_array as $data_row):
// possible data modeling here...
$this->db->insert('table_name', $data_row);
endforeach;
答案 1 :(得分:0)
由于Mysql 5.7有原生JSON存储支持,如果你没有MySQL 5.7,你总是可以使用longtext字段,然后当你想将它转换回数组时你可以做json_decode($ result)/对象
首先,如果这正是你的JSON,那么你做错了,这是一个无效的JSON字符串。
确保为你的json使用一些验证器,这里有一些例子json:
$myJson = '{
"employees": [{
"firstName": "John",
"lastName": "Doe"
}, {
"firstName": "Anna",
"lastName": "Smith"
}, {
"firstName": "Peter",
"lastName": "Jones"
}]
}';
示例:
$this->db->insert($this->table, ['json_field' => $myJson]);
要阅读它,你可以这样做:
$result = $this->db->select('json_field')->from($this->table)->result_row();
$backToArray = (array) json_decode($result);
我做CodeIgniter已经有一段时间了,所以我不完全确定它是完全正确的,但它应该让你大致了解如何做到这一点。
答案 2 :(得分:0)
你可以在表中保存json,或者你可以使用json_decode()来保存单独的列。
控制器中的
A(:,c) = logical(A(:,c);
和模型
A(:,c) = A(:,c)~=0;