我在编程方面相当新,我遇到了问题。我有一个开始计费按钮,这将使所有用户的每月会费等于800.如果我再按一次,那么每月会费仍然是800,但欠款现在将变为800.如果我最后一次按,每月会费仍然是800,然后拖欠会变成1600.这个过程还在继续。我的问题是,我在模型中设置了if else。如果每月会费和欠款都等于0,那么它将正确地将每月会费更新为800,而欠款将仍为0.但是,如果我更改了值并在phpmyadmin中将每月会费和欠款设为0(以便模拟房主支付他/她的会费),价值观跟随他人的帐户。请查看下面的视频,以便更好地理解我的观点。
视频:https://youtu.be/nULIAqLXNso
型号:
function billstart_user()
{
$query = $this->db->select('*')->from('accounts')->where('role', 0)->where('isActive', 1)->get();
foreach($query->result() as $row):
$data = array(
'monthly_dues' => '800',
'arrears' => '0',
);
$data2 = array(
'monthly_dues' => '800',
'arrears' => $row->arrears + '800'
);
if($row->arrears && $row->monthly_dues == 0)
{
$this->db->where('role', 0)->where('isActive', 1)->where('userid', $row->userid);
$this->db->update('accounts',$data);
print_r($this->db->last_query());
}
else if($row->arrears == 0 && $row->monthly_dues > 0 || $row->arrears && $row->monthly_dues > 0)
{
$this->db->where('role', 0)->where('isActive', 1);
$this->db->update('accounts',$data2);
print_r($this->db->last_query());
}
endforeach;
}
以下是更新后查询显示的内容:
UPDATE `accounts` SET `monthly_dues` = '800', `arrears` = '0' WHERE `role` =0 AND `isActive` = 1 AND `userid` = '32'
UPDATE `accounts` SET `monthly_dues` = '800', `arrears` = 4000 WHERE `role` =0 AND `isActive` = 1
UPDATE `accounts` SET `monthly_dues` = '800', `arrears` = 4000 WHERE `role` =0 AND `isActive` = 1
UPDATE `accounts` SET `monthly_dues` = '800', `arrears` = 4000 WHERE `role` =0 AND `isActive` = 1
答案 0 :(得分:0)
您只在第一个查询中指定userid
。这意味着查询运行的其他3次您将4000
应用于表中的每条记录。