如何将这个JSON字符串化数组保存到数据库中?

时间:2017-10-19 07:45:57

标签: php arrays json

我有一个提交字符串化JSON数组的表单。这是数据示例:

"[{'name':'i_cp_nm','value':'1'},{'name':'i_cp_tp','value':'2'},{'name':'i_cp_mb','value':'3'},{'name':'i_cp_em','value':'4'},{'name':'i_cp_jb','value':'5'},{'name':'i_cp_nt','value':'6'},{'name':'i_cp_nm','value':'7'},{'name':'i_cp_tp','value':'8'},{'name':'i_cp_mb','value':'9'},{'name':'i_cp_em','value':'10'},{'name':'i_cp_jb','value':'11'},{'name':'i_cp_nt','value':'12'}]";

这是所需的插入数据:

i_cp_jd     i_cp_nm     i_cp_tp     i_cp_mb     i_cp_em     i_cp_jb     i_cp_nt
    xxx           1           2           3           4           5           6
    xxx           7           8           9          10          11          12

这是当前循环,但我不知道这是否正确:

$arr_cp = //arr_data



    foreach($arr_cp as $val_cp){
        $dt_cp['i_cp_jd']   = $this->input->post('i_v_id');

        //didn't know what to do here

        $this->model_vendor->insert_vendor_pic($dt_cp);

    }

插入方法:

function insert_vendor_pic($dt_cp){
    $query = $this->db->insert('vendordetail_pic',$dt_cp);
    return $query;
}

5 个答案:

答案 0 :(得分:1)

您所要做的就是使用json_decode

$arr_cp = json_decode($yourJsonData, true);

答案 1 :(得分:0)

如果您想系统地进行,那么您应该使用适当的JSON解析器/反序列化器来创建域的实例或您应该从该表单数据创建的任何内容,并将这些实例插入到数据库中。

答案 2 :(得分:0)

如果您想系统地进行,那么您应该使用适当的JSON解析器/反序列化器来创建域的实例或您应该从该表单数据创建的任何内容,并将其插入到DB中。

答案 3 :(得分:0)

json格式的数据,因此您必须使用

将json解码为数组
$arr_cp = json_decode($arr_cp, TRUE);

然后将$ arr_cp转换为foreach循环

foreach($arr_cp as $val_cp){
        $dt_cp['i_cp_jd']   = $this->input->post('i_v_id');

        //didn't know what to do here

        $this->model_vendor->insert_vendor_pic($dt_cp);

    }

答案 4 :(得分:0)

尝试使用此功能将输入准备/转换为矩阵:

function prepareData($rawData) {
    $rawData = str_replace("'", '"', $rawData);

    $data = array();
    foreach(json_decode($rawData, true) as $d) {
            if (!isset($data[$d['name']])) {
                $data[$d['name']] = array();
            }
            $data[$d['name']][] = $d['value'];
    }

    $rows = array();
    foreach ($data as $col => $values) {
        foreach ($values as $i => $v) {
            if (!isset($rows[$i])) {
                $rows[$i] = array();
            }
            $rows[$i][$col] = $v;
        }
    }

    return $rows;
}

转换:

$rawData = "[{'name':'i_cp_nm','value':'1'},{'name':'i_cp_tp','value':'2'},{'name':'i_cp_mb','value':'3'},{'name':'i_cp_em','value':'4'},{'name':'i_cp_jb','value':'5'},{'name':'i_cp_nt','value':'6'},{'name':'i_cp_nm','value':'7'},{'name':'i_cp_tp','value':'8'},{'name':'i_cp_mb','value':'9'},{'name':'i_cp_em','value':'10'},{'name':'i_cp_jb','value':'11'},{'name':'i_cp_nt','value':'12'}]";
print_r(prepareData($rawData));

输出:

Array
(
    [0] => Array
        (
            [i_cp_nm] => 1
            [i_cp_tp] => 2
            [i_cp_mb] => 3
            [i_cp_em] => 4
            [i_cp_jb] => 5
            [i_cp_nt] => 6
        )

    [1] => Array
        (
            [i_cp_nm] => 7
            [i_cp_tp] => 8
            [i_cp_mb] => 9
            [i_cp_em] => 10
            [i_cp_jb] => 11
            [i_cp_nt] => 12
        )

)

最后,您可以按照自己喜欢的方式将此数据简单地插入数据库。