簡體   English   中英

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

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

我想使用提交按鈕在數據庫中插入多行,這是我的視圖代碼

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

這是我的控制器代碼

            $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輸出為

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

但是,當插入數據時,表上只會插入一行。

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

我想在數據庫中插入所有數據

在這里,$ 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);
        }

並在模型循環中像這樣:

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

您也可以在模型中使用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