php - Codeigniter 更新未按预期执行

标签 php mysql codeigniter

我对编程还很陌生,我遇到了一个问题。我有一个开始计费按钮,这将使所有用户的月费等于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/

相关文章:

php - 使用 php 将数字添加到获取的数组中

php - 相同的网络用户使用相同的 session

php - 如何在php扩展中获取请求 header

php - 如何在联系表 7 中提交表单后重定向?

php - 如何将默认表格内容显示为不同,以及单击按钮时表格内容在 UI 中的同一个表格中应该不同?

php - MySQL 使用 table1.id REGEXP table2.id 为同一组选择不同的行

java - com.mysql.jdbc.exceptions.jdbc4.CommunicationsException : Communications link failure

MySQL 多个 ORDER BY 基于条件

php - 使用 codeigniter 表单助手查询

mysql - 如何在插入查询中添加外键值 - mysql - CodeIgniter