繁体   English   中英

插入批处理代码点火器

[英]Insert batch codeigniter

这是我在mysql上的表

| DETAIL_ID  | REPAIR_ESTIMATE_ID   |  ITEM | DAMAGE_ID  |  REPAIR_ID  | REMARKS  |   MANHOUR   |
-----------------------------------------------------------------------------------------------
|            |                      |       |            |             |          |             |  
|            |                      |       |            |             |          |             |  

我有一个数组来自html的视图,由jQuery ajax处理。

Array 
(
[0] => Array
    (
        [TYPE] => Cleaning
        [ITEM] => Certificate
        [DAMAGE] => Broken
        [REPAIR] => Blast&Paint
        [REMARKS] => 
        [MANHOUR] => 
    )

[1] => Array
    (
        [TYPE] => Frame
        [ITEM] => Certificate
        [DAMAGE] => Broken
        [REPAIR] => Blast&Paint
        [REMARKS] => 
        [MANHOUR] => 
    )
)

我有2个问题:

如何将这个数组与insert_batch() 我阅读了文档,其值定义如下:

$data = array(
    array(
        'title' => 'My title',
        'name' => 'My Name',
        'date' => 'My date'
    ),
    array(
        'title' => 'Another title',
        'name' => 'Another Name',
        'date' => 'Another date'
    )
);

$this->db->insert_batch('mytable', $data);

其次,根据我的表, repair_estimate_id是外键。 我如何操纵数组以具有如下新值:

Array
    (
      [0] => Array
       (
        [REPAIR_ESTIMATED_ID]  => 'SOme value'
        [TYPE] => Cleaning
        [ITEM] => Certificate
        [DAMAGE] => Broken
        [REPAIR] => Blast&Paint
        [REMARKS] => 
        [MANHOUR] => 
    )

    [1] => Array
    (
        [REPAIR_ESTIMATED_ID]  => 'SOme value'
        [TYPE] => Frame
        [ITEM] => Certificate
        [DAMAGE] => Broken
        [REPAIR] => Blast&Paint
        [REMARKS] => 
        [MANHOUR] => 
    )
)

更新我使用ajax获取此数组:

var myArrays =[];

$(document).on('submit', '#upload', function () {
    var tr = $('#tableReport tr:last');
    var type = tr.find("#type").val();
    var item = tr.find("#item").val();
    var damage = tr.find("#damage").val();
    var repair = tr.find("#repair").val();
    var remarks = tr.find("#remarks").val();
    var manhour = tr.find("#manhour").val();

    myArrays.push({"TYPE": type, "ITEM": item, "DAMAGE": damage, "REPAIR": repair, "REMARKS": remarks, "MANHOUR": manhour});
    $.ajax({
        url: "<?php echo base_url('surveyor/c_surveyor/add_detail'); ?>",
        type: "POST",
        data: {
            myArrays: myArrays,

        },
        dataType: 'json',
        success: function (obj) {
            console.log(obj);
        }
    });

    return false;
});

这是PHP代码

public function add_detail() {
    $insertData= array();
    if(is_array($this->input->post('myArrays'))){
        foreach ($this->input->post('myArrays') as $key => $value) {
            $temp = $value;
            $temp['REPAIR_ESTIMATE_ID'] =  $cek_master->row()->REPAIR_ESTIMATE_ID;
            $insertData =$temp;
        }
    }

我使用Firebug调试了它:

echo "<pre>";
print_r($this->input->post('myArrays'));
echo "<pre>";
print_r($insertData);

结果是:

Array
(
[0] => Array
    (
        [TYPE] => 01
        [ITEM] => 01
        [DAMAGE] => 01
        [REPAIR] => 30
        [REMARKS] => 
        [MANHOUR] => 
    )

[1] => Array
    (
        [TYPE] => 10
        [ITEM] => 02
        [DAMAGE] => 18
        [REPAIR] => 45
        [REMARKS] => Test
        [MANHOUR] => 12:00
    )

)

Array
(
    [TYPE] => 10
    [ITEM] => 02
    [DAMAGE] => 18
    [REPAIR] => 45
    [REMARKS] => Test
    [MANHOUR] => 12:00
    [REPAIR_ESTIMATE_ID] => 7
)

你可以这样做:

  $insertData = array();
  if(is_array($input))
  {
    foreach($input as $key => $value)
    {
      $temp = $value;
      $temp['REPAIR_ESTIMATED_ID'] = 'some Value';
      //***************Please remove below line
      //$insertData[] = $temp;
     //Please add this new line.
     array_push($insertData, $temp);
    }
    $this->db->insert_batch('mytable', $insertData); 
  }
   $insertData = array();
   if(is_array($input))
   {
      foreach($input as $data)
      {
         $data['REPAIR_ESTIMATED_ID'] = 'some Value';
         $insertData[] = $data;
      }
      $this->db->insert_batch('mytable', $insertData); 
   }

暂无
暂无

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

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