当我取消选中所有复选框时,它会提交表单。它应该会清除与组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();
在函数的末尾,这样您就可以检查执行了什么查询。