Php 如果未选中所有权限,则不会更新数据库

Php 如果未选中所有权限,则不会更新数据库,php,codeigniter,Php,Codeigniter,当管理员用户取消选中所有用户组时,不会从数据库中清除权限并抛出错误。如果未选择任何权限并且表单已提交,则应清除属于该id的权限列。但由于某种原因,是否不清除 让它工作的最好方法是什么 Error Number: 1064 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 'WHER

当管理员用户取消选中所有用户组时,不会从数据库中清除权限并抛出错误。如果未选择任何权限并且表单已提交,则应清除属于该id的权限列。但由于某种原因,是否不清除

让它工作的最好方法是什么

Error Number: 1064
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 4
UPDATE user_group SET name = 'Demonstration', permission = WHERE user_group_id = '10'
Filename: C:\Xampp\htdocs\codeigniter-project\system\database\DB_driver.php
Line Number: 330
用户组模型

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Users_group_model extends CI_Model {

    public function addUserGroup($data) {
        $this->db->query("INSERT INTO " . $this->db->dbprefix . "user_group SET name = " . $this->db->escape($data['name']) . ", 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 . "' 
        ");

    }

  public function getUserGroup($user_group_id) {
    $query = $this->db->query("SELECT DISTINCT * FROM " . $this->db->dbprefix . "user_group WHERE user_group_id = '" . (int)$user_group_id . "' ");

    $user_group = array(
        'name' => $query->row('name'),
        'permission' => unserialize($query->row('permission'))
    );

    return $user_group;
}
}


权限上似乎存在问题,当未设置权限时,会中断查询。我建议在这一次只使用CI上的活动记录。例如:

public function editUserGroup($user_group_id, $data)
{
    $permission = (isset($data['permission']) ? serialize($data['permission']) : null);
    $update = array(
        'name' => $data['name'],
        'permission' => $permission,
    );
    $this->db->where('user_group_id', $user_group_id);
    $this->db->update($this->db->dbprefix . 'user_group', $update);
}
或者使用
->set()
(个人偏好)更干净:


现在出现错误遇到PHP错误严重性:注意消息:unserialize():256字节偏移量0处的错误文件名:user/users\u group\u model.PHP行号:38@acoderslife你为什么给我看这个错误?它甚至不包括在您发布的代码中,因为自从添加了您的代码并刷新页面后,它就出现了now@acoderslife那就是说它更新了?如果我想在提交用户组表单时提供帮助,那么您必须带我完成这一步。如果选择了access和/或modify,则它应该更新数据库。如果未选中所有权限,则应在表单提交后清除列权限列。但现在抛出了这个错误。
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Users_group extends MX_Controller {
private $error = array();

public function __construct() {
    parent::__construct();
    $this->lang->load('admin/user/users_groups', 'english');
    $this->load->model('admin/user/users_group_model');

    if(!$this->user->logged()) {
        redirect('admin');
    } elseif(!$this->user->hasPermissionAccess()) {
        redirect('admin/error');
    } else {
        return true;
    }
 }

public function index() {
    $this->document->setTitle($this->lang->line('heading_title'));
    $this->getList();
}


 public function add() {
    if ($this->request->server['REQUEST_METHOD'] == 'POST') {

        $this->load->model('admin/user/users_group_model');

        $this->users_group_model->addUserGroup($this->request->post);

        redirect('admin/users_group');
    }

    $this->getForm();
}

public function edit() {
    $this->load->model('admin/user/users_group_model');

    if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) {

        $user_group_id = $this->uri->segment(4);

        $this->users_group_model->editUserGroup($user_group_id, $this->request->post);

        $this->session->set_flashdata('success', $this->lang->line('text_success'));

        redirect('admin/users_group');

    }

protected function getForm() {
    $this->load->model('admin/user/users_group_model');
    $this->load->library('request');

    $data['heading_title'] = $this->lang->line('heading_title');

    $data['text_select_all'] = $this->lang->line('text_select_all');
    $data['text_unselect_all'] = $this->lang->line('text_unselect_all');

    $data['entry_name'] = $this->lang->line('entry_name');
    $data['entry_access'] = $this->lang->line('entry_access');
    $data['entry_modify'] = $this->lang->line('entry_modify');

    $data['button_save'] = $this->lang->line('button_save');
    $data['button_cancel'] = $this->lang->line('button_cancel');

    $data['breadcrumbs'] = array();

    $data['breadcrumbs'][] = array(
        'text' => $this->lang->line('text_home'),
        'href' => site_url('admin/dashboard')
    );

    $data['breadcrumbs'][] = array(
        'text' => $this->lang->line('heading_title'),
        'href' => site_url('admin/users_group')
    );

    $data['cancel'] = site_url('admin/users_group');

    if (!empty($this->error['warning'])) {
        $data['error_warning'] = $this->error['warning'];
    } else {
        $data['error_warning'] = '';
    }

    if (!empty($this->session->flashdata('success'))) {
        $data['success'] = $this->session->flashdata('success', $this->lang->line('text_success'));
    } else {
        $data['success'] = '';
    }

    $user_group_id = $this->uri->segment(4);
    $data['user_group_id'] = $user_group_id;

    if (isset($user_group_id)) {
        $data['action'] = site_url('user/users_group/add');
    } else {
        $data['action'] = site_url('admin/users_group/edit/' . $user_group_id);
    }

    if (!empty($user_group_id) && $this->request->server['REQUEST_METHOD'] != 'POST') {
        $user_group_info = $this->users_group_model->getUserGroup($user_group_id);
    }

    if (isset($this->request->post['name'])) {
        $data['name'] = $this->request->post['name'];
    } elseif (!empty($user_group_info)) {
        $data['name'] = $user_group_info['name'];
    } else {
        $data['name'] = '';
    }

    $ignore = array(
        'blank',
        'error',
        'register',
        'dashboard',
        'column_left',
        'menu',
        'startup',
        'login',
        'logout',
        'forgotten',
        'reset',
        'not_found',
        'permission',
        'footer',
        'header'
    );

    $data['permissions'] = array();

    $files = glob(APPPATH . 'modules/admin/' . 'controllers/*/*.php');

    foreach ($files as $file) {
        $part = explode('/', dirname($file));

        $permission = basename($file, '.php');

        if (!in_array($permission, $ignore)) {
            $data['permissions'][] = $permission;
        }
    }

    if (isset($this->request->post['permission']['access'])) {
        $data['access'] = $this->request->post['permission']['access'];
    } elseif (isset($user_group_info['permission']['access'])) {
        $data['access'] = $user_group_info['permission']['access'];
    } else {
        $data['access'] = array();
    }

    if (isset($this->request->post['permission']['modify'])) {
        $data['modify'] = $this->request->post['permission']['modify'];
    } elseif (isset($user_group_info['permission']['modify'])) {
        $data['modify'] = $user_group_info['permission']['modify'];
    } else {
        $data['modify'] = array();
    }

    $this->load->view('user/users_group_form', $data);

}
public function editUserGroup($user_group_id, $data)
{
    $permission = (isset($data['permission']) ? serialize($data['permission']) : null);
    $update = array(
        'name' => $data['name'],
        'permission' => $permission,
    );
    $this->db->where('user_group_id', $user_group_id);
    $this->db->update($this->db->dbprefix . 'user_group', $update);
}
public function editUserGroup($user_group_id, $data)
{
    $permission = isset($data['permission']) ? serialize($data['permission']) : null;
    $this->db->set('permission', $permission);
    $this->db->set('name', $data['name']);
    $this->db->where('user_group_id', $user_group_id);
    $this->db->update($this->db->dbprefix . 'user_group', $update);
}