如何使用 Codeigniter 将数组(多行)插入 Mysql? [英] How to Insert Arrays (Multiple rows) into Mysql using Codeigniter?

查看:44
本文介绍了如何使用 Codeigniter 将数组(多行)插入 Mysql?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我搜索了很多,我发了很多次,但我没有得到任何正确的答案.

这是我的查看页面 - 查看

这里我写了一个查询,用于为特定的ref_no 动态添加字段,所以请帮我模型控制器

<?php echo form_open(base_url().'sample/invoice');?><label for="type" class="control-label">Type</label><div><?php echo form_input(array('id'=>'type','name'=>'type'));?></div><label for="ref" class="control-label">REF</label><div><?php echo form_input(array('id'=>'ref','name'=>'ref'));?></div><label for="title" class="control-label">TITLE</label><div><?php echo form_input(array('id'=>'title','name'=>'title'));?></div><div id="description"><p id="add_field">添加说明</p></div><label for="doc" class="control-label">支持文档</label><div><?php echo form_input(array('id'=>'doc','name'=>'attach','type'=>"file"));?></div><input id="btn_add" name="btn_add" type="submit" class="btn btn-primary" value="保存"/>

<脚本>无功计数 = 0;$(document).ready(function() {$('p#add_field').click(function(){计数 += 1;var html='<strong>Description '+ count +'</strong>'+'<input id="description'+ count +'"name="description[]'+'" type="text"/>'+'<input id="description'+ count +'"name="voucher_no[]'+'" type="text"/>'+'<input id="description'+ count+'"name="price[]'+'" type="text"/><br/>';$('#description').append(html);});});

这是我的控制器:

$data1 = 数组('invoice_type' =>$this->input->post('type'),'reference_no' =>$this->input->post('ref'),'des_title' =>$this->input->post('title'),);$data2 = 数组('reference_no' =>$this->input->post('ref'),'说明' =>$this->input->post('des'),);$this->sample_model->insert_entry($data1, $data2);

这是我的模型:

function insert_entry($data1, $data2) {$this->db->insert('myinvoice', $data1);$this->db->insert('invoice_description', $data2);}

我想要的是为一个参考号插入多个描述.当我插入单个数据时,myinvoice 是父表,invoice_description 是子表,但我想插入多个描述

解决方案

首先,我们不能在同一页面中多次使用相同的 id.并在控制器中

function abc(){$description = $this->input->post("description");$voucher_no = $this->input->post("voucher_no");$price = $this->input->post("price");$i = 0;foreach($description as $row){$data['description'] = $description[$i];$data['voucher_no'] = $voucher_no[$i];$data['price'] = $price[$i];$this->db->insert("your_table",$data);$i++;}}

希望以上代码对您有所帮助.您可以直接插入控制器,也可以调用模型函数来进行插入.

i have search alot and i have post somany times but i didnt get any proper answer.

This is my view page - View

here i have write a query for add fields dynamically for particular ref_no so help me for model and controller

<div id="login_form">
        <?php echo form_open(base_url().'sample/invoice'); ?>
        <label for="type" class="control-label">Type</label>
        <div><?php echo form_input(array('id'=>'type','name'=>'type'));?></div>

        <label for="ref" class="control-label">REF</label>
        <div><?php echo form_input(array('id'=>'ref','name'=>'ref'));?></div>

        <label for="title" class="control-label">TITLE</label>
        <div><?php echo form_input(array('id'=>'title','name'=>'title'));?></div>

        <div  id="description"><p id="add_field">ADD DESCRIPTION</p></div>

        <label for="doc" class="control-label">Support Doc</label>
        <div><?php echo form_input(array('id'=>'doc','name'=>'attach','type'=>"file"));?></div>

        <input id="btn_add" name="btn_add" type="submit" class="btn btn-primary" value="Save" />
    </div>
<script>
            var count = 0;
    $(document).ready(function() {
        $('p#add_field').click(function(){
           count += 1;
            var html='<strong>Description  '+ count +'</strong>'+'<input id="description'+ count +'"name="description[]'+'" type="text" />'+'<input id="description'+ count +'"name="voucher_no[]'+'" type="text" />'+'<input id="description'+ count +'"name="price[]'+'" type="text" /><br />';
            $('#description').append(html);

    });
    });

        </script>

This is My Controller :

$data1 = array(
    'invoice_type' => $this->input->post('type'),
    'reference_no' => $this->input->post('ref'),
    'des_title' => $this->input->post('title'),


     );

    $data2 = array(
        'reference_no' => $this->input->post('ref'),
        'description' => $this->input->post('des'),
        ); 
 $this->sample_model->insert_entry($data1, $data2);

This My MOdel :

function insert_entry($data1, $data2) {

    $this->db->insert('myinvoice', $data1);
    $this->db->insert('invoice_description', $data2);
}

What i want is insert mutiple descriptions for one reference number. myinvoice is parent table and invoice_description is child table when i insert single data its works perfectly but i want insert multiple descriptions

解决方案

first of all we cannot use same id more than once in the same page. And in controller

function abc(){
    $description = $this->input->post("description");
    $voucher_no = $this->input->post("voucher_no");
    $price = $this->input->post("price");
    $i = 0;
    foreach($description as $row){
        $data['description'] = $description[$i];
        $data['voucher_no'] = $voucher_no[$i];
        $data['price'] = $price[$i];
        $this->db->insert("your_table",$data);
        $i++;
    }
}

I hope the above code helps you. You can directly insert in controller or you can call a model function to do that insertion.

这篇关于如何使用 Codeigniter 将数组(多行)插入 Mysql?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆