codeigniter将多维数组插入数据库

时间:2014-09-30 06:35:32

标签: php arrays codeigniter

您好我有这个需要插入数据库表的多维数组。 到目前为止,我已经提出了这个完全没有工作的解决方案。我有一个表单支持动态字段许多动态字段。我想使用此函数保存这些动态创建的字段。首先,我能够创建一个循环来格式化数据。 我用这个循环来格式化数据

        $url = str_replace(' ','-',strtolower($this->input->post('title')));
        $data = ['business' => [
                                'title' => $this->input->post('title'),
                                'URL' => $url,
                                'category' => $this->input->post('category'),
                                'region' => $this->input->post('region')
                                ],
                 'description_' => [
                                'text' => $this->input->post('description'),
                                ],
                 'logo_' => [
                                'blob' => $this->input->post('logo'),
                                ]];
        $nyingi = [ 'location_' => ['text' => 'loc_txt','priority' => 'loc_order'], 
                    'photo_' => ['path' => 'p_txt'], 
                    'video_' => ['path' => 'v_txt'], 
                    'product_' => ['p_id' => 'pt_q', 'text' => 'pt_txt', 'expire' => 'pt_xpr', 'title' => 'pt_tt'], 
                    'service_' => ['p_id' => 'st_q', 'text' => 'st_txt', 'expire' => 'st_xpr', 'title' => 'st_tt'], 
                    'hours_' => ['time1' => 't1', 'time2' => 't2', 'type' => 'tt'], 
                    'map_' => ['text' => 'm_txt']
                ];
        foreach($nyingi as $ins => $vl){
            foreach($vl as $fld => $box){
                $uwazi = $this->input->post($box);
                if(is_array($uwazi) && 1<count($uwazi)){
                        foreach($uwazi as $bb){
                            $one[$ins][$fld][] = $bb;
                        }

                } elseif(is_array($uwazi) && 1==count($uwazi)) {
                    print_r($uwazi);
                }
            }
        }
         for($g=0;$g<count($one);$g++){
            for($h=0;$h<count($one[$g]);$h++){
                for($z=0;$z<count($one[$g][$h]);$z++){
                    //if(array_key_exists($one[$g][$h+1], $one)){
                        print $one[$g][$h][$z+1];
                    //}
                }
            }
        }
      $data = array_merge($data, $one);

上述代码的输出

[location_] => Array
    (
        [text] => Array
            (
                [0] => Lemara Main Office
                [1] => Themi branch
                [2] => Sinoni branch
            )
        [priority] => Array
            (
                [0] => 1
                [1] => 2
                [2] => 3
            )

    )

[photo_] => Array
    (
        [path] => Array
            (
                [0] => lemaraphoto.png
                [1] => themiphoto.png
                [2] => sinoniphoto.png
            )
    )
[video_] => Array
    (
        [path] => Array
            (
                [0] => lemaravideo.mp4
                [1] => themivideo.mp4
                [2] => sinonivideo.mp4
            )

    )

[product_] => Array
    (
        [p_id] => Array
            (
                [0] => product photo
                [1] => product 3 photo
                [2] => Product 2 photo
            )
        [text] => Array
            (
                [0] => product desc
                [1] => product 3 desc
                [2] => product 2 desc
            )

        [expire] => Array
            (
                [0] => product expire
                [1] => product 3 expire
                [2] => Product 2 expire
            )
        [title] => Array
            (
                [0] => product
                [1] => Product 3
                [2] => Product 2
            )

    )

[service_] => Array
    (
        [p_id] => Array
            (
                [0] => Service 2 photo
                [1] => service 3 photo
                [2] => service photo
            )
        [text] => Array
            (
                [0] => service 2 desc
                [1] => service 3 desc
                [2] => service desc
            )

        [expire] => Array
            (
                [0] => Service 2 expire
                [1] => service 3 expire
                [2] => service expire
            )
        [title] => Array
            (
                [0] => Service 2
                [1] => service 3
                [2] => service
            )

    )

)

我有这个add_bz函数

function add_bz($data){
  $this->db->trans_start(); $er=0;
  foreach($data as $table => $sql){
   if($table==="business"){
    $this->db->insert($table, $sql);
    $id = $this->db->insert_id();
   } else {
   array_merge($sql, array('idd' => $id));
   $this->db->insert($table, $sql);}
  }
  $this->db->trans_complete();
  if ($this->db->trans_status() === FALSE){print "Transaction Fails";return FALSE;}
  return TRUE;
}

该功能允许我仅以此格式插入数据。

[[business] => Array
    (
        [title] => Email Marketing
        [URL] => email-marketing
        [category] => 3
        [region] => 2
    )

[description_] => Array
    (
        [text] => Some desc
    )
[logo_] => Array
    (
        [blob] => mainlogo.png
    )
]

as business,decription_,logo_是db表,其中title,URL,category,region,text,blob是相应表的db列,其余是转到这些列的数据。

我希望它如何运作。例如,在location_

我希望将数组更改为我的工作格式或其他类似的工作

location_ => ['text' => [[0] => 'Lemara Main Office'], 
              'priority' => [[0] => '1']
             ]
location_ => ['text' => [[1] => 'Themi Office'], 
              'priority' => [[1] => '2']
             ]
location_ => ['text' => [[2] => 'Sinoni Office'], 
              'priority' => [[2] => '3']
             ]

或者像这样

location_ => [0 => [['text' => 'Lemara Main Office'], 
                    ['priority' => '1']
                   ],
             1 => [['text' => 'Themi Main Office'], 
                   ['priority' => '2']
                   ],
             2 => [['text' => 'Sinoni Main Office'], 
                   ['priority' => '3']
                   ]
             ],

并且还支持许多专栏而不仅仅是两个专栏。 任何帮助都深深感激,因为我一直在努力工作这几天。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我建议您将数组转换为JSON String,然后将其作为文本插入到DB中。 JSON可以很好地处理你的多维数据,

将数组转换为JSON:http://php.net/manual/en/function.json-encode.php 要将JSON转换为数组:http://php.net/manual/en/function.json-decode.php