мы иногда сталкиваемся с ошибкой базы данных 1064 в браузере Chrome Chrome. но он работает отлично в других браузерах. пожалуйста, дайте мне знать любые решения, которые у вас есть.
Код ошибки:
Произошла ошибка базы данных. Номер ошибки: 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;
}
}
Вам нужно добавить условие для того, чтобы существовал либо идентификатор пользователя, либо нет. Попробуйте поставить условие, как в приведенном ниже коде. Надеюсь, это поможет вам решить эту проблему.
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
пуст из сеанса. Я хотел бы предложить вернуть false, если user_id
пуст (проверяя, является ли он нулевым), и я даже написал построитель запросов, который имеет преимущества экранирования 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;
}
}