【问题标题】:how to change multiple rows in codeigniter by using update batch query如何使用更新批量查询更改 codeigniter 中的多行
【发布时间】:2026-02-16 08:25:01
【问题描述】:

问题: 我只想通过在我的数据库中使用唯一 id 来更新账单,但我的问题是它显示错误为未定义的索引 id..帮助我解决这个错误...

控制器代码:

public function Bill_Edit()
{
    $session_data = $this->session->userdata('logged_in');
    $data['username'] = $session_data['username'];
    $query = $this->db->get('parmaster');    
    $data['PName']=$query->result_array();
    $data['r'] = $this->User_model->Bill_Edit1();
    $data['result'] =$this->User_model->Bill_Edit();
    $this->load->view('Inventory/Bill_Edit',$data);
}

型号代码:

public function Bill_Edit()
{
    $Search = $this->input->post('Search');
    $this->db->where('billno', $Search);

    $this->db->select('*');
    $this->db->from('salesitem');
    $this->db->join('salesbill', 'salesbill.no = salesitem.billno','left outer');
    $query = $this->db->get()->result_array();
    return $query;
}
public function Bill_Edit1()
{
    $Search = $this->input->post('Search');
    $this->db->where('billno', $Search);
    $this->db->select('*');
    $this->db->from('salesitem');
    $this->db->join('salesbill', 'salesbill.no = salesitem.billno','left outer');
    $query = $this->db->get()->row();
    return $query;
}

下面我附上了我的截图错误..帮我修复这个错误

更新批处理代码:

public function Bill_Update($data) 
{  
    $LDate = $this->input->post('TDate');
    $date = str_replace('/', '-', $LDate);
    $newDate = date("Y-m-d", strtotime($date));
    $id =$this->input->post('billid'); 
    $billno = $this->input->post("billno");
    $data = $this->input->post(); 
    $count = count($data['Product_Code']); 
    for($i = 0; $i<$count; $i++){ 
        $entries[] = array( 
            'Id' => $data['billId'][$i],
             'Product_Code'=>$data['Product_Code'][$i], 
             'Prdtname'=>$data['Prdtname'][$i], 
             'Qty'=>$data['Qty'][$i], 
             'rate'=>$data['rate'][$i], 
             'billdate'=>$newDate, 
             'amount'=>$data['amount'][$i] 
        ); 
    } 
    $this->db->where('Id',$id);
    $this->db->update_batch('salesitem', $entries,'Id'); 

【问题讨论】:

  • 检查我编辑的代码
  • 报错是批量更新,贴出来的代码没有更新?
  • 抱歉忘记添加更新代码..现在检查我的代码
  • 完成先生..检查我编辑的代码
  • 当我使用 print_r($entries) 但该值未在数据库中更新时,它会正确打印值

标签: php codeigniter


【解决方案1】:

以下代码有问题

更新批处理代码:

public function Bill_Update($data) 
{  
    $LDate = $this->input->post('TDate');
    $date = str_replace('/', '-', $LDate);
    $newDate = date("Y-m-d", strtotime($date));
    $id =$this->input->post('billid'); 
    $billno = $this->input->post("billno");
    $data = $this->input->post(); 
    $count = count($data['Product_Code']); 
    for($i = 0; $i<$count; $i++){ 
        $entries[] = array( 
            'Id' => $data['billId'][$i],
             'Product_Code'=>$data['Product_Code'][$i], 
             'Prdtname'=>$data['Prdtname'][$i], 
             'Qty'=>$data['Qty'][$i], 
             'rate'=>$data['rate'][$i], 
             'billdate'=>$newDate, 
             'amount'=>$data['amount'][$i] 
        ); 
    } 
    $this->db->where('Id',$id);
    $this->db->update_batch('salesitem', $entries,'Id'); 
}

改变 'Id' =&gt; $data['billId'][$i],'id' =&gt; $data['billId'][$i],

删除$this-&gt;db-&gt;where('Id',$id);

$this-&gt;db-&gt;update_batch('salesitem', $entries,'Id');$this-&gt;db-&gt;update_batch('salesitem', $entries,'id');

然后再试一次。

【讨论】:

  • 试过先生..但现在出现未定义的索引 id 错误\