为什么PHP没有选择更新数据?

为什么PHP没有选择更新数据?,php,mysql,sql,codeigniter,Php,Mysql,Sql,Codeigniter,嗨,我正在尝试更新表中的一列。我在列中选择了一个范围,并使用foreach循环遍历它们。但是,我注意到它不仅更新了我选择的范围,而且还更新了选择范围之外的范围。谢谢你的建议 代码: 这看起来确实很简单,我确实从打印中得到了我选择了200行。但是代码实际上更新了表中所有3000行,而我没有在$record变量中选择这些行。这怎么会发生 谢谢 更新:许多人尝试过,但我们仍然无法跟踪问题。你能帮我想一个不用foreach就能完成任务的方法吗 谢谢,请讲: $this->db->update

嗨,我正在尝试更新表中的一列。我在列中选择了一个范围,并使用foreach循环遍历它们。但是,我注意到它不仅更新了我选择的范围,而且还更新了选择范围之外的范围。谢谢你的建议

代码:

这看起来确实很简单,我确实从打印中得到了我选择了200行。但是代码实际上更新了表中所有3000行,而我没有在$record变量中选择这些行。这怎么会发生

谢谢

更新:许多人尝试过,但我们仍然无法跟踪问题。你能帮我想一个不用foreach就能完成任务的方法吗

谢谢,

请讲:

$this->db->update('user', $data);
在foreach之外

foreach ($record->result() as $row) {
        $data=array
            (
                'weekday'=>1,
            );

}
$this->db->update('user', $data);

问题已解决。您不能限制更新函数的功能。它将对表中的所有行进行更新,尽管使用了foreach函数。为了实现同样的目标,我求助于:

            $update = "UPDATE user SET weekday = 2 WHERE user_category=4 LIMIT 200";
            $this->db->query($update); 

            $update = "UPDATE user SET weekday = 2 WHERE user_category=4 LIMIT 200";
            $this->db->query($update); 

            $update = "UPDATE user SET weekday = 2 WHERE user_category=4 LIMIT 200";
            $this->db->query($update); 

            $update = "UPDATE user SET weekday = 2 WHERE user_category=4 LIMIT 200";
            $this->db->query($update); 

                    ...... all the way to the end. Of course I used a while loop to do the above.

完成了。谢谢大家的帮助。

我正在使用codeigniter,这是在提取数据之前定义标准的方法。另外,我使用print\u r确认我只提取了200行数据:我尝试运行:$this->db->last\u query(),结果显示最后一个查询是:“UPDATE
user
SET
weekday
=1”。
<?php

// SELECT * FROM 'user' WHERE 'weekday' = 5 AND 'source' = 'site' LIMIT 200
$this->db->where(['weekday' => 5, 'source' => 'site']);
$record = $this->db->get('user', 200);

foreach($record->result() as $row) {
    // UPDATE 'user' SET  'weekday' = 1 WHERE 'user_id' = {$row->user_id}
    $this->db->update('user', ['weekday' => 1], ['user_id' => $row->user_id]);
};
            $update = "UPDATE user SET weekday = 2 WHERE user_category=4 LIMIT 200";
            $this->db->query($update); 

            $update = "UPDATE user SET weekday = 2 WHERE user_category=4 LIMIT 200";
            $this->db->query($update); 

            $update = "UPDATE user SET weekday = 2 WHERE user_category=4 LIMIT 200";
            $this->db->query($update); 

            $update = "UPDATE user SET weekday = 2 WHERE user_category=4 LIMIT 200";
            $this->db->query($update); 

                    ...... all the way to the end. Of course I used a while loop to do the above.