我们有时在谷歌浏览器面临1064数据库错误。 但它在其他浏览器中工作正常。 请让我知道您有什么解决方案。
错误代码:
发生数据库错误错误号:1064 您的错误 SQL语法;检查与您的MySQL服务器相对应的手册 在第 1 行的"附近使用的正确语法的版本,从中选择 * tbl_user_rights usr_id=**
文件名: helpers/common_helper.php
行号:42**
程序代码:-
function user_has_right($rights_id) {
$CI = get_instance();
$CI->load->model('user_model');
$user_id = $CI->session->userdata('user_id');
$query = $CI->db->query("select * from " . TBL_USERS_RIGHTS . " where usr_id=" . $user_id);
$rights = $query->result();
$user_right = array();
foreach ($rights as $right) {
array_push($user_right, $right->sm_id);
}// print_r($user_right);exit;
if (in_array($rights_id, $user_right)) {
return TRUE;
} else {
return FALSE;
}
}
您需要为用户 ID 是否存在添加条件。 尝试按照下面的代码放置条件。希望这可以帮助您解决此问题。
function user_has_right($rights_id) {
$CI = get_instance();
if($CI->session->userdata('user_id') != '')
{
$CI->load->model('user_model');
$user_id = $CI->session->userdata('user_id');
$query = $CI->db->query("select * from " . TBL_USERS_RIGHTS . " where usr_id=" . $user_id);
$rights = $query->result();
$user_right = array();
foreach ($rights as $right) {
array_push($user_right, $right->sm_id);
}// print_r($user_right);exit;
if (in_array($rights_id, $user_right)) {
return TRUE;
} else {
return FALSE;
}
}
else
{
return FALSE;
}
}
请添加
$user_id = $CI->session->userdata('user_id');
$user_id = ($user_id && is_numeric($user_id)) ? $user_id : 0;
如果没有得到任何东西,它会user_id设置为零
查询失败,因为会话中的user_id
为空。如果user_id
为空,我建议返回 false(通过检查它是否为 null(,我什至编写了一个查询构建器 get,它具有转义user_id
的好处:
function user_has_right($rights_id) {
$CI = get_instance();
$CI->load->model('user_model'); // not sure where this is being used...
$user_id = $CI->session->userdata('user_id');
if (is_null($user_id)) {
return false;
}
$query = $CI->db->get_where('tbl_users_rights', array('usr_id' => $user_id));
//$query = $CI->db->query("select * from " . TBL_USERS_RIGHTS . " where usr_id=" . $user_id);
if ($query->num_rows() == 0) {
return false;
}
$rights = $query->result();
$user_right = array();
foreach ($rights as $right) {
array_push($user_right, $right->sm_id);
}// print_r($user_right);exit;
if (in_array($rights_id, $user_right)) {
return TRUE;
} else {
return FALSE;
}
}