在Codeigniter中获取多个数组并插入数据库

时间:2016-05-24 02:57:49

标签: mysql arrays codeigniter

我有多个数组要插入数据库,但我没有修复字段名称,因为可以选择格式表数据并插入数据库,但可以使用$ id_template检查字段名称。

这是我的格式表(示例) enter image description here

所以我想知道如何从多个数组中获取数据以插入数据库

这是我在控制器中的代码

    $column = $this->m_rate_template->get_column($id_template);
    $colum_detail = implode(",", $column);
    $column_cut = explode(",", $colum_detail);  //example data get format is Array ( [0] => min [1] => max)
    foreach ($column_cut as $key => $val){

        $a = $this->input->post($column_cut[$key]);
            foreach ($a as $key1 => $val1){
                echo $val1;
                $child_data = array(
                        'id' => $this->m_rate_template->generate_id_in_template($template_name),
                        'id_rate' => $id_rate,
                        $column_cut[$key] => $val1
                );
                $this->m_rate_template->insert_rate($child_data, $template_name);
            }
    }

3 个答案:

答案 0 :(得分:1)

我的数据显示如下

Array ( [id] => 4ae665037e [id_rate] => 7f881e02bb [min] => 1 ) 
Array ( [id] => bc3e60157f [id_rate] => 7f881e02bb [min] => 2 )
Array ( [id] => 082de3ad82 [id_rate] => 7f881e02bb [max] => 1 ) 
Array ( [id] => ee135ecd8a [id_rate] => 7f881e02bb [max] => 2 ) 

实际上,数据应该是这样的

 Array ( [id] => 4ae665037e [id_rate] => 7f881e02bb [min] => 1 [max] => 2) 
 Array ( [id] => 082de3ad82 [id_rate] => 7f881e02bb [max] => 1 [max] => 2) 

更新

$array = array(
 [0] => array(
  'min' => '2500',
  'max' => '5000'
 ),
[1] => array(
 'min' => '5001',
 'max' => '7000'
)

答案 1 :(得分:1)

您可以使用批量插入来插入多个

$this->db->insert_batch();

第一个参数是表名,第二个是数组(记录)数组

答案 2 :(得分:0)

如果你想在表中插入多个记录,那么你也可以使用codeigniter内置的insert_batch函数,而不需要在循环中进行make查询。 所以我的执行会很快。

你想要以下面的格式排列。

$array = array(
   [0] => array(
    'column 1' => 'value 1',
    'column 2' => 'value 1'
   ),
  [1] => array(
    'column 1' => 'value 2',
    'column 2' => 'value 2'
   )
)

$this->db->insert_batch('tbl_name',$array)

所以请在循环中创建代码并生成上面的数组,然后在insert_batch函数中简单地传递数组。