更新没有数据codeigniter的表


Update table with no data codeigniter

当我取消选中所有复选框时,它会提交表单。它应该会清除与组id匹配的权限列。它没有。如果有一些$data['permissions'],它会很好地更新,但如果我取消选择所有并提交表单,则需要它来清除列。

但由于某些原因,permission = " . (isset($data['permission']) ? $this->db->escape(serialize($data['permission'])) : '') . "无法工作: ''

抛出错误

您的SQL语法有错误;查看手册与您的MySQL服务器版本相对应,以便使用正确的语法第5行"WHERE user_group_id='10'"附近UPDATE user_group SET name="演示",permission=WHERE user_group_id='10'文件名:C:''Xampp/htdocs/codeigner-3/application/modules/admin/models/user/model_user_user_group.php行号:19

模型函数

public function editUserGroup($user_group_id, $data) {
    $this->db->query("UPDATE " . $this->db->dbprefix . "user_group 
        SET 
        name = " . $this->db->escape($data['name']) . ", 
        permission = " . (isset($data['permission']) ? $this->db->escape(serialize($data['permission'])) : '') . "
        WHERE user_group_id = '" . (int)$user_group_id . "'
    ");
}

怎么了

我已经解决了问题,我不得不使用转义引号"''"

permission = " . (isset($data['permission']) ? $this->db->escape(serialize($data['permission'])) : "''") . "

型号

public function editUserGroup($user_group_id, $data) {
    $this->db->query("UPDATE " . $this->db->dbprefix . "user_group 
        SET 
        name = " . $this->db->escape($data['name']) . ", 
        permission = " . (isset($data['permission']) ? $this->db->escape(serialize($data['permission'])) : "''") . "
        WHERE user_group_id = '" . (int)$user_group_id . "'
    ");
}

尝试放置

$this->db->last_query();

在函数的末尾,这样您就可以检查执行了什么查询。