首页 > 解决方案 > 无法将检查值插入数据库

问题描述

目前我有一个权限表,用户可以在其中使用复选框为具有特定角色的用户授予或恢复 URL 链接的访问权限。因此,为此我已经做到了,当一个复选框被按下时,该复选框的 id 和用户的角色被插入到我的数据库中,但由于某种原因我无法将它插入到数据库中。我试过以下代码:

控制器类:

public function permission()
    {
        if ($this->form_validation->run() == FALSE)
        {
            $main['permissions']=$this->users_model->get_permission_array();
            $main['roles']=$this->users_model->get_roles_array();
            foreach($main['roles'] as $key => $val):
            $main['access'][$val['roles_id']]=$this->users_model->get_access_array(array('roles_id'=>$val['roles_id']));
            endforeach;
            $main['page'] = 'crm/users/permission';
            $this->load->view('crm/index', $main);
        }
        if($this->input->post())
        {
            $loginid=false;
            foreach($main['roles'] as $key => $val):
            if(isset($_POST['roleid'.$val['roles_id']])){ 
                $this->users_model->clear_access(array('roles_id'=>$val['roles_id']));  
                foreach($_POST['roleid'.$val['roles_id']] as $id => $access): 
                    $data=array('roles_id'=>$val['roles_id'],'permissions_id'=>$access); 
                    $loginid=$this->users_model->permission_access($data);              
                endforeach;         
            }
            endforeach;
            if($loginid){
                $this->session->set_flashdata('message', '<p>Permission updated Successfully.</p>');
                redirect('users/permission');
            } else {
                $this->session->set_flashdata('message', '<p>Error!! - Permission not updated.</p>');
                redirect('users/permission');
            }
        }
    }

型号类:

function get_permission_array()
{
    $query = $this->db->get("crm_client_permissions");
    return $query->result_array();
}

function get_access_array($cond)
{
    $this->db->select("permissions_id");
    $this->db->where($cond);
    $query = $this->db->get("crm_client_role_access");
    return $query->result_array();
}

function clear_access($cond)
{
    return $this->db->delete("crm_clients_access",$cond);
}

function permission_access($data)
{
    return $this->db->insert("crm_clients_access",$data);
}

function get_roles_array($cond='')
{
    if($cond !='') $this->db->where($cond);
    $query = $this->db->get("crm_client_roles"); 
    return $query->result_array();  
}

查看类:

<div <?php echo form_open_multipart('users/permission'); ?>>
<table>
<?php if($permissions) $i=0;foreach($permissions as $key => $permission): ?>
          <tr>
            <td class="align-center"><?php echo ++$i; ?></td>
            <td><?php echo $permission['page']; ?></td>
            <td><?php echo $permission['url']; ?></td>
            <?php foreach($roles as $rolekey => $role): 
              if($role['roles_id'] == 1)$checked = 'checked';
              if(in_array($permission['permissions_id'],array_map('current',$access[$role['roles_id']])))
              $checked = 'checked';
              else
              $checked = ''; ?>
            <td align="center"><div class="checkbox checkbox-success m-t-0"><input type="checkbox" class="accessbox"
            id="role<?php echo $rolekey ?>-<?php echo $key ?>" name="roleid<?php echo $role['roles_id']; ?>[]" 
            <?php echo $checked?> <?php echo ($role['roles_id'] == 1) ? 'disabled="disabled"' : '' ?>   value="<?php  echo $permission['permissions_id']; ?>" />
            <label for="role<?php echo $rolekey ?>-<?php echo $key ?>"></label></div></td>
            <?php endforeach; ?>
          </tr>
          <?php endforeach; ?>
      </table>
      <div class="text-center">
        <button type="submit" class="btn btn-info">Save Permission</button> <a href="<?php echo site_url('users/roles') ?>" class="btn btn-warning">Cancel</a>
      </div>
      <?php echo form_close(); ?> </div>

但在这里我总是得到错误!- 权限未更新。在我的视图类中,这意味着它跳转到我的控制器的 else 部分。我不确定我要去哪里错了

标签: phpmysqlcodeigniter

解决方案


似乎问题就在这里$loginid=$this->users_model->permission_access($data);和这里return $this->db->insert("crm_clients_access",$data);。我的建议是:

  • 使用 XDebug 调试您的代码并查看插入函数返回的内容和原因。
  • 您也可以查找 php log 以查看是否有任何数据库错误。要使用错误日志,您需要找到 php.ini 配置文件并启用“error_log = /path/to/fige.log”行。
  • 您也可以查找数据库数据以确定插入函数是否在表中创建新行crm_clients_access,如果没有?您需要检查与数据库主机:端口的连接配置,因此数据库进程必须在这些主机:端口上可用。

推荐阅读