codeigniter发生数据库错误错误号:1064

j2datikz  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(360)

我们有时会在googlechrome浏览器中遇到1064数据库错误。但它在其他浏览器中运行良好。请告诉我你有什么解决办法。
错误代码:
发生数据库错误错误号:1064您的sql语法有错误;请查看与您的mysql服务器版本对应的手册,以获取在第1行的“”附近使用的正确语法select*from tbl\u user\u rights where usr\u id=**
文件名: helpers/common_helper.php 行号:42**
程序code:-

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;
    }
}
rur96b6h

rur96b6h1#

请添加

$user_id = $CI->session->userdata('user_id');
$user_id = ($user_id && is_numeric($user_id)) ? $user_id : 0;

如果它没有得到任何东西,它会将用户id设置为零

avkwfej4

avkwfej42#

您需要为用户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;
 }
}
qkf9rpyu

qkf9rpyu3#

查询失败,因为 user_id 会话中为空。如果 user_id 是空的(通过检查它是否为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;
    }
}

相关问题