簡體   English   中英

一次為單個外鍵插入多個記錄

[英]insert multiple records at once for single foreign key

基於使用表單中的一個forigenk值插入多行

在此處輸入圖片說明

根據上面的圖片,選擇項目有一個下拉菜單。選擇項目后,用戶將可以添加其他詳細信息。 現在我想在表單提交project_id(下拉菜單中具有項目名稱的id映射)時插入其他行。
但在我的情況下,project_id僅插入第一行。 當我打印數組時出現以下結果。

數組([0] =>數組([project_id] => 1 [staff_id] => 2 [item_no] => 1 [描述] => 1 [數量] => 1 [單位] =>立方體[速率] => 1 [人工時間] => 1 [人工成本] => 1 [數量] => 2) 1 =>數組([project_id] => [staff_id] => 2 [item_no] => 2 [描述] => 2 [數量] => 2 [單位] =>平方英尺[費率] => 2 [勞力小時] => 2 [勞務成本] => 2 [金額] => 8)[2] =>數組([project_id] => [ staff_id] => 2 [item_no] => 3 [description] => 3 [qty] => 3 [unit] =>立方體[rate] => 3 [laboure_hrs] => 3 [laboure_cost] => 3 [amount] => 18))

我如何將project_id傳遞給另一個字段。 我的代碼如下

控制者

public function create(){

//    validate fields
            $this->form_validation->set_rules('work_product_id', 'Work Product Id', 'required');
            $this->form_validation->set_rules('work_item_description', 'Work Item Description', 'required');
            $this->form_validation->set_rules('quantity', 'Quantity', 'required');
           $this->form_validation->set_rules('rate', 'Rate', 'required|numeric');
           $this->form_validation->set_rules('laboure_hrs', 'Laboure Hrs', 'required|numeric');
            $this->form_validation->set_rules('laboure_cost', 'Laboure Cost', 'required|numeric');

           if ($_POST) 
   {
        $project_id=$this->input->post('project');
        $staff_id=$this->input->post('staff_id');
        $item_no=$this->input->post('work_product_id');
        $description=$this->input->post('work_item_description');
        $qty=$this->input->post('quantity');
        $unit=$this->input->post('unit');
        $rate=$this->input->post('rate');
        $laboure_hrs=$this->input->post('laboure_hrs');
        $laboure_cost=$this->input->post('laboure_cost');
        $amount=$this->input->post('txtmultTotal');
           $data= [];

   for ($i = 0; $i < count($this->input->post('work_product_id')); $i++)
    {
       $data[$i] = array(
           'project_id' => $project_id
           'staff_id' => $staff_id[$i],
           'item_no' => $item_no[$i],
           'description' => $description[$i],
           'qty' => $qty[$i],
           'unit' => $unit[$i],
           'rate' => $rate[$i],
           'laboure_hrs' => $laboure_hrs[$i],
           'laboure_cost' => $laboure_cost[$i],
           'amount' => $amount[$i],
        );
       }
        print_r($data);
       $this->boq_model->create($data);
    }      

}

模型

function create($data){

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

        }

我想你想插入一行到你的project表,然后插入幾行到您的item使用的值表project_id列作為外鍵。

(相對而言,您的問題很難理解;如果您從英語水平較高的人那里得到編輯幫助,則可能會比我的問題得到更好的回答。)

這就是你要做的。

首先,在project表中插入一行。 不要在INSERT查詢中提及project_id列,因此MySQL將分配一個自動遞增的主鍵。

  INSERT INTO project (name, whatever) VALUES (?, ?);

然后, 使用LAST_INSERT_ID()檢索自動增量ID的值,如下所示。

  SET @project_id := LAST_INSERT_ID();

然后,使用該值將行插入到item表中。

 INSERT INTO item (project_id, description, qty, whatever)
           VALUES (@project_id, ?, ?, ?)

訣竅是在插入主表后立即檢索LAST_INSERT_ID()的值,並將其存儲在MySQL用戶定義的變量 @project_id 然后,將其用於詳細信息表中的每次插入。

從您的html,project_id不是控件數組。 因此,您應該做的是在循環之前檢索project_id並在循環中使用它,或者在循環中刪除project_id前面的[$ i]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM