2017-08-07 59 views
1

嗨,大家好,我在模型中的查询中遇到问题,我会在解释它之前向您显示代码。Codeigniter:如何更新不会影响特定列的金额

for($x = 1; $x <= count($this->input->post('subparticulars')); $x++) { 

    $feetype = $this->input->post('subparticulars')[$x]; 
    $student = $this->input->post('substudentid'); 
    $schoolyear = $this->input->post('subschoolyeardata'); 
    $month = $this->input->post('month'); 

    $payment = $this->input->post('subpaymentamount')[$x]; 

    $this->db->set('statement_amount', '`statement_amount` -'. $payment, FALSE); 

    $this->db->where(array('feetype_id !=' => 2, 'feetype_id !=' => 3, 'feetype_id' => $feetype, 'student_id' => $student, 'schoolyear_id' => $schoolyear, 'month_id' => $month)); 

    $status3 = $this->db->update('tbl_statement'); 
} 

这里我有它有一个附加的动态添加行功能包含量和subparticulars和subpayments多支付的细节,我运行一个查询,将减去我支付我的statement_amounts,你可以看到在$ this-> db-> set中。现在,我有一个问题,我的where子句,如果你会试图了解我的where子句,这是条件。

我想更新除了footype_id:2和3之外的所有费用,但其他feetype_id将会更新,我该如何实现这一点。当我运行的代码仍然会扣除所有feetype_id的2和3

回答

0

这里的正确答案

for($x = 1; $x <= count($this->input->post('subparticulars')); $x++) { 

    $feetype = $this->input->post('subparticulars')[$x]; 
    $student = $this->input->post('substudentid'); 
    $schoolyear = $this->input->post('subschoolyeardata'); 
    $month = $this->input->post('month'); 

    $payment = $this->input->post('subpaymentamount')[$x]; 

    if ($feetype == 2 OR $feetype == 3) 
    { 
     $this->db->set('statement_amount', '`statement_amount` -'. $payment, FALSE); 

     $this->db->where(array('feetype_id' => $feetype, 'student_id' => $student, 'schoolyear_id' => $schoolyear)); 

     $status3 = $this->db->update('tbl_statement'); 
    }   
    else { 
     $this->db->set('statement_amount', '`statement_amount` -'. $payment, FALSE); 

     $this->db->where(array('feetype_id' => $feetype, 'student_id' => $student, 'schoolyear_id' => $schoolyear, 'month_id' => $month)); 

     $status3 = $this->db->update('tbl_statement'); 
    }  
} 
的费用