Php 如何使用codeigniter更新表中的确切行

Php 如何使用codeigniter更新表中的确切行,php,codeigniter,row,Php,Codeigniter,Row,我的查看页面: 在这张图片中,我使用date(即它显示我给出的特定日期的数据,从“collection”表中)获取数据,如贷款号,partyname,coll.amt) 如果我输入了贷款编号2的代表金额,但我没有给贷款编号1,3。当我按下ok按钮时rep amt应该在“collecion”表中更新,以获得确切的贷款编号和日期 我的型号代码: 公共函数batchinsert($data){ $session_data=$this->session->userdata('logged_in');

我的查看页面:

在这张图片中,我使用
date
(即它显示我给出的特定日期的数据,从“collection”表中)获取数据,如
贷款号
partyname
coll.amt

如果我输入了
贷款编号
2的代表金额,但我没有给
贷款编号
1,3。当我按下
ok按钮时
rep amt应该在“collecion”表中更新,以获得确切的贷款编号和日期

我的型号代码:

公共函数batchinsert($data){
$session_data=$this->session->userdata('logged_in');
$data['username']=$session_data['repname'];
$LDate=$this->input->post('CDate');
$date=str_replace(“/”、“-”、$LDate);
$newDate=日期(“Y-m-d”,标准时间($date));
$lno=$this->input->post(“Sno”);
$count=count($data['Sno']);
对于($i=0;$i$data['ramt'][$i],
); 
}
$this->db->where('loanno',$lno);
$this->db->where('collection\u date',$newDate);
$this->db->update_batch('collection',$entries2);
//$this->db->insert_batch('test',$entries2);
重定向('Collection_Entry','refresh');
}
我的控制器代码:

公共函数集合\u Insert(){
$this->load->model('User_model');
$result=$this->User\u model->batchinsert($\u POST);
}
我的查看页面代码:


贷款编号
党名
科尔金额
代表金额

如果只想对具有非空值的
ramt[]
输入进行更新,可以为每个输入文本名称分配一个键,以便以后识别:

public function batchinsert($data){
    $session_data = $this->session->userdata('logged_in');
    $data['username'] = $session_data['repname'];
    $LDate = $this->input->post('CDate');
    $date = str_replace('/', '-', $LDate);
    $newDate = date("Y-m-d", strtotime($date));
    $lno = $this->input->post("Sno");
    $ramt = $this->input->post("ramt"); // added ramt input variable
    $count = count($data['Sno']);
    $updateArray = array();
    for($x = 0; $x < sizeof($lno); $x++){

        if (!empty($ramt[$x])) { // this will only insert data on loanno which have non-empty ramt values
            $updateArray[] = array(
                'loanno' => $lno[$x],
                'receive_amt'=> $ramt[$x]
            );
        }
    }
    $this->db->where('collection_date',$newDate);
    $this->db->update_batch('collection',$updateArray,'loanno');
    //        $this->db->insert_batch('test', $entries2);
    redirect('Collection_Entry','refresh');
}
这将仅循环通过非空的
ramt[]
输入,然后仅更新动态
loanno
值和静态
collection\u date


你能发布你的表单视图吗?还有,这些
$data
变量是从哪里来的?为了识别您的特定行,您需要为不同的输入赋予不同的类。@请查看我编辑的代码,然后清除它。这一行显示错误$this->db->update\u batch('collection',$updateArray,'loanno');作为未定义的索引:loannoI已打印并查看代码中的值,该值是正确的,但此行“$this->db->update_batch('collection',$updateArray,'loanno');”显示错误,且未更新该值。我可以知道您使用的CI版本吗?2.1版本可能是版本问题未出现,我也认为这是唯一的版本问题,我相信这
更新批上的
未定义索引
是CI版本3.1.1/3.1.2上的一个问题,我正在CI版本3.1.5上测试它,它工作正常,但我不知道CI版本2.1。。。
public function batchinsert($data){
    $session_data = $this->session->userdata('logged_in');
    $data['username'] = $session_data['repname'];
    $LDate = $this->input->post('CDate');
    $date = str_replace('/', '-', $LDate);
    $newDate = date("Y-m-d", strtotime($date));
    $lno = $this->input->post("Sno");
    $ramt = $this->input->post("ramt"); // added ramt input variable
    $count = count($data['Sno']);
    $updateArray = array();
    for($x = 0; $x < sizeof($lno); $x++){

        if (!empty($ramt[$x])) { // this will only insert data on loanno which have non-empty ramt values
            $updateArray[] = array(
                'loanno' => $lno[$x],
                'receive_amt'=> $ramt[$x]
            );
        }
    }
    $this->db->where('collection_date',$newDate);
    $this->db->update_batch('collection',$updateArray,'loanno');
    //        $this->db->insert_batch('test', $entries2);
    redirect('Collection_Entry','refresh');
}
// Example query output : 
// UPDATE `collection`
// SET
// `receive_amt` = 
// CASE 
//     WHEN `loanno` = '1' THEN 1 
//     WHEN `loanno` = '3' THEN 2 
//     WHEN `loanno` = '6' THEN 3 
//     WHEN `loanno` = '17' THEN 4 
//     ELSE `receive_amt`
// END 
// WHERE `collection_date` = '2019/01/09' AND `loanno` IN ('1','3','6','17')