繁体   English   中英

如何插入批处理代码点火器

[英]how to insert batch codeigniter

所有人,我在数组中有一个这样的发布数据,我很困惑如何在控制器中创建逻辑:

发布数据:

Array
(
    [nama_agenda] => blalala
    [kilasan] => asdsadsadasd
    [tgl_agenda] => 2014-06-01
    [jam_agenda] => 13:27:30
    [komisi] => Array
    (
        [0] => 1
        [1] => 3
    )

    [fraksi] => Array
    (
        [0] => 1
        [1] => 4
    )

    [badan] => Array
    (
        [0] => 1
        [1] => 3
    )

    [anggota] => Array
    (
        [0] => 1
        [1] => 4
    )

    [bagian] => Array
    (
        [0] => 2
        [1] => 4
    )

)

我的问题是如何在控制器中插入数据库? 感谢帮助。 我会感激的

使用$ this-> input-> post()获取数组中的所有数据,例如:

$bagian= $this->input->post('bagian');

并创建一个array()

$arr=array(
'db_table_col_1'=>$bagian,
'db_table_col_2'=>$post_data,
'db_table_col_2'=>$post_data
);

将此数组传递给模型

$this->your_model_name->function_name($arr);

然后在模型中创建功能

function_name($arg){
$this->db->insert('table_name',$arr);
}

如果要插入多行,则只需使用foreach

<?php
$arr1=array();
$arr= array(
'nama_agenda' => 'blalala',
'kilasan' => 'asdsadsadasd',
'tgl_agenda' => '2014-06-01',
'jam_agenda' => '13:27:30',
'komisi' => array
    (
        '0' => 1,
        '1' => 3
    ),
'fraksi' => array
    (
        '0' => 1,
        '1' => 4
    ),
 'badan' => array
    (
        '0' => 1,
        '1' => 3
    ),
'anggota' => array
    (
        '0' => 1,
        '1' => 4
    ),
  'bagian' => array
    (
        '0' => 2,
        '1' => 4
    )
   );
  foreach($arr as $row){
if(is_array($row)){
array_push($arr1,$row);
}
  }
 print_r($arr1);

然后将此数组传递给batch_insert

function_name($arr1){
$this->db->insert_batch('table_name',$arr1); 
}

注意arr1语法必须是

 $arr1 = array(
 array(
  'table_col1' => 'My title' ,
  'table_col2' => 'My Name' 
  ),
 array(
  'table_col1' => 'other title' ,
  'table_col2' => 'other Name' 
  )

 );

?>

由于您的结构不适用于insert_batch方法。 您需要首先对其进行重组。 考虑以下示例:

$original_values = array(
    'nama_agenda' => 'blalala',
    'kilasan' => 'asdsadsadasd',
    'tgl_agenda' => '2014-06-01',
    'jam_agenda' => '13:27:30',
    'komisi' => array(1, 3),
    'fraksi' => array(1, 4),
    'badan' => array(1, 3),
    'anggota' => array(1, 4),
    'bagian' => array(2, 4),
);

$new_values = array();
for($x = 0, $size = count($original_values['komisi']); $x < $size; $x++) {
    foreach($original_values as $key => &$value) {
        if(!is_array($value)) {
            $new_values[$x][$key] = $value;
        } else {
            $new_values[$x][$key] = array_shift($value);
        }
    }
}

echo '<pre>';
print_r($new_values);

应该产生如下内容:

Array
(
    [0] => Array
        (
            [nama_agenda] => blalala
            [kilasan] => asdsadsadasd
            [tgl_agenda] => 2014-06-01
            [jam_agenda] => 13:27:30
            [komisi] => 1
            [fraksi] => 1
            [badan] => 1
            [anggota] => 1
            [bagian] => 2
        )

    [1] => Array
        (
            [nama_agenda] => blalala
            [kilasan] => asdsadsadasd
            [tgl_agenda] => 2014-06-01
            [jam_agenda] => 13:27:30
            [komisi] => 3
            [fraksi] => 4
            [badan] => 3
            [anggota] => 4
            [bagian] => 4
        )

)

现在,您可以使用insert_batch()方法。

$this->db->insert_batch('table_name', $new_values);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM