php - 无法将检查值插入数据库
问题描述
目前我有一个权限表,用户可以在其中使用复选框为具有特定角色的用户授予或恢复 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 部分。我不确定我要去哪里错了
解决方案
似乎问题就在这里$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
,如果没有?您需要检查与数据库主机:端口的连接配置,因此数据库进程必须在这些主机:端口上可用。
推荐阅读
- c# - ExecuteNonQuery :: Error Data too long for column at row 2 无论我是否已使用 c# 将 .csv 文件插入 Mysql
- java - 将 hssf 工作簿转换为 xssf 工作簿没有给出预期的结果
- java - AWS - 创建一个 AmazonSNSClient
- python - 在机器人框架中向下滚动带有固定标题的表格
- php - 从常规数组创建多维数组
- python - Python2.7:如何用颜色重定向文本
- java - 小米设备上的“无法启动启动器”消息
- html - 在合理的情况下强制引导 4 nav-pills 中的第一项为全宽
- ios - 关闭 iOS 后滑
- python - 使用 tensorflow1.8.0 时,“BasicLSTMCell”对象没有属性“_kernel”