简体   繁体   English

如何使用Codeigniter在mysql中插入多行

[英]How to insert multiple rows in mysql using codeigniter

I want to insert multiple rows into the db using submit button, This is my view code 我想使用提交按钮在数据库中插入多行,这是我的视图代码

    <?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 }} ?> 

This is my controller code 这是我的控制器代码

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

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

$data output is $ data输出为

    array(3) {
    ["journal_id"]=>int(83)
    ["user_role"]=>
    string(15) "quality_checker"
    ["user_id"]=>
    string(3) "136"
    }
    array(3) {
    ["journal_id"]=>
    int(83)
    ["user_role"]=>
    string(5) "texer"
    ["user_id"]=>
    string(3) "103"
    }
    array(3) {
    ["journal_id"]=>
    int(83)
    ["user_role"]=>
    string(5) "texer"
    ["user_id"]=>
    string(3) "133"
    }
     array(3) {
    ["journal_id"]=>
    int(83)
    ["user_role"]=>
    string(5) "texer"
    ["user_id"]=>
    string(3) "132"
    }
    array(3) {
   ["journal_id"]=>
   int(83)
   ["user_role"]=>
   string(10) "typesetter"
   ["user_id"]=>
   string(3) "109"
   }

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

But,when insert the data only one row will be inserted on the table. 但是,当插入数据时,表上只会插入一行。

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

I want to insert all datas in db 我想在数据库中插入所有数据

Here the $data is reinitialized everytime. 在这里,$ data每次都会重新初始化。 Update the code like this: 像这样更新代码:

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

And in the model loop through like this: 并在模型循环中像这样:

public function addJournalUser($data) {
    foreach ($data AS $row) {
      // execute your insertion query with variable row   
    }
}

You can also use insert_batch in the model,no need of foreach 您也可以在模型中使用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); 

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

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