Codeigniter使用多个where子句更新多行

dap*_*ini 2 php mysql codeigniter

当我尝试此代码时:

$query = '';
foreach ($data as $row)
{
    $where = array(
                'community_id'  => $row->id,
                'user_id'       => $this->session->user_id,
                'status'        => 'invited_to_join',
            );
    $update = array(
                'status' => 'joined',
            );
    $query .= $this->db->set($update)->where($where)->get_compiled_update('community_members').'; ';
}
if ($query)
{   
    return $this->db->query($query);
}
Run Code Online (Sandbox Code Playgroud)

它给了我错误:

您的SQL语法有误;检查与您的MariaDB服务器版本相对应的手册以获取正确的语法,以在第4行的'UPDATE community_membersSET status=' joined'WHERE ='18'A' 附近使用community_id

此答案在CASE中使用直接查询,但我不知道如何将其转换为Codeigniter的查询生成器。

小智 5

试试这个例子;

您可以$data['id']像这样直接使用数组,而无需循环使用作为我的观点

        $this->db->set('status','joined');
        $this->db->where('community_id',$data['id']);
        $this->db->where('user_id',$this->session->user_id); 
        $this->db->where('status','invited_to_join');
        $this->db->update('community_members');
Run Code Online (Sandbox Code Playgroud)