我对编程还很陌生,我遇到了一个问题。我有一个开始计费按钮,这将使所有用户的月费等于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
最佳答案
您仅在第一个查询中指定userid
。这意味着查询运行的另外 3 次您将 4000
应用于表中的每条记录。
关于php - Codeigniter 更新未按预期执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41534113/