Php 如何使用codeigniter在mysql中插入多行

Php 如何使用codeigniter在mysql中插入多行,php,mysql,codeigniter,Php,Mysql,Codeigniter,我想使用submit按钮在数据库中插入多行, 这是我的视图代码 <?php foreach($role_array as $k =>$v) { //var_dump($k); if($k != "bookin_operator" && $k!= "production_manager" && $k != "client" && $k != "a

我想使用submit按钮在数据库中插入多行, 这是我的视图代码

    <?php   
        foreach($role_array as $k =>$v)
        {
            //var_dump($k);
            if($k != "bookin_operator" && $k!= "production_manager" && $k != "client" && $k != "admin" )
            {

        ?>
            <div class="row-fluid"> 
                <div class="span6">      
                    <div class='control-group'>


                        <label for='<?php echo $k;  ?>' class='control-label'><?php  echo $v ;?></label>
                        <div class='controls'>
                            <select class='form-control' name='<?php echo $k;  ?>[]' id='<?php echo $k;  ?>' multiple='multiple' size='5'>
                                <?php

                                   foreach($all_datas[$k] as $datas ) 
                                   {

                                        $username = "{$datas->nickname}";

                                        echo "<option value='{$datas->id}'>{$username}</option>";
                                   }
                                ?>
                            </select>
                            <label for="<?php echo $k;  ?>" class="error" style="display:none"></label>
                        </div>
                    </div>                         
                </div>    

            </div>  
            <?php }} ?> 
但是,当插入数据时,表上将只插入一行

   array(3) {
   ["journal_id"]=>
   int(83)
   ["user_role"]=>`enter code here`
    string(10) "typesetter"
    ["user_id"]=>
    string(3) "153"
    }  

我想在db中插入所有数据,$data每次都会重新初始化。按如下方式更新代码:

$data = array();
    $roles = $this->utility->roles;
        foreach($roles as $k => $v)
        {
            if($k != "bookin_operator" && $k!= "production_manager" && $k != "client" && $k != "admin" && isset($post_data[$k]))
            {
                $userrole = $k;
                $post_user=isset($post_data[$k])?$post_data[$k]:'';

                if (count($post_user) > 0)
                {
                    for ($i = 0; $i < count($post_user); $i++)
                    {
                        $data[] = array("journal_id" => $new_journal_id,"user_role" => $userrole,"user_id" =>$post_user[$i]);
                       // var_dump($data);
                        $flag = true;



                    }
                }
            }
        }

        if(isset($flag) && !empty($data))
        {

            $v=$this->JournalUsers->addJournalUser($data);
        }

在这里,$数据每次都会重新初始化。按如下方式更新代码:

$data = array();
    $roles = $this->utility->roles;
        foreach($roles as $k => $v)
        {
            if($k != "bookin_operator" && $k!= "production_manager" && $k != "client" && $k != "admin" && isset($post_data[$k]))
            {
                $userrole = $k;
                $post_user=isset($post_data[$k])?$post_data[$k]:'';

                if (count($post_user) > 0)
                {
                    for ($i = 0; $i < count($post_user); $i++)
                    {
                        $data[] = array("journal_id" => $new_journal_id,"user_role" => $userrole,"user_id" =>$post_user[$i]);
                       // var_dump($data);
                        $flag = true;



                    }
                }
            }
        }

        if(isset($flag) && !empty($data))
        {

            $v=$this->JournalUsers->addJournalUser($data);
        }

您还可以在模型中使用insert_batch,无需使用foreach

$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); 

您还可以在模型中使用insert_batch,无需使用foreach

$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); 

使用“打印”并发布阵列使用“打印”并发布阵列更正只缺少一件事只需在代码上方定义
$data
@SanjayKumarNS我怀疑公共函数addJournalUser($data){$this->db->insert(“rsgp_journal_users,$data);}这是我的insert函数。如果不更改此项,是否有可能???,因为此函数用于不同的位置只需纠正缺少的一件事即可在代码上方定义
$data
@SanjayKumarNS我怀疑公共函数addJournalUser($data){$this->db->insert(“rsgp_journal_users,$data);}这是我的insert函数。如果不改变这一点,是否可能??,因为此功能用于不同的位置
$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);