更新 table 没有数据 codeigniter

Update table with no data codeigniter

当我取消select 我所有的复选框并提交表单时。应该清除权限列匹配组 ID。它不是。如果有一些$data['permissions'],它会更新,但如果我全部取消select并提交表单,则需要它来清除列。

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

抛出错误。

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE user_group_id = '10'' at line 5 UPDATE user_group SET name = 'Demonstration', permission = WHERE user_group_id = '10' Filename: C:/Xampp/htdocs/codeigniter-3/application/modules/admin/models/user/model_user_user_group.php Line Number: 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 . "'
    ");
}

怎么了?

尝试将

$this->db->last_query();

在函数的末尾,以便您可以检查已执行的查询。

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

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 . "'
    ");
}