You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter数据库1064语法错误:仅Chrome偶现问题寻求解决方案

解决Chrome中CodeIgniter偶尔出现MySQL 1064语法错误的问题

从你给出的错误信息来看,核心问题是SQL语句select * from tbl_user_rights where usr_id=后面没有值,导致MySQL报语法错误。而这个问题只在Chrome中偶尔出现,大概率是用户ID(usr_id)的传递/初始化逻辑在Chrome环境下偶尔失效,结合CodeIgniter的常见使用场景,给你以下可行的解决方案:

1. 给函数加上参数校验,从根源避免错误SQL执行

在user_has_right函数的最开头,先对usr_id做有效性检查,确保只有合法值才会进入数据库查询环节。同时尽量使用CodeIgniter的查询构造器代替手动拼接SQL,既安全又能避免语法问题:

function user_has_right($right_key, $usr_id = null) {
    $CI =& get_instance();
    
    // 优先从参数获取usr_id,参数为空则从会话取
    if (is_null($usr_id)) {
        $usr_id = $CI->session->userdata('usr_id');
    }
    
    // 校验usr_id是否合法:非空且为数字类型
    if (empty($usr_id) || !is_numeric($usr_id)) {
        // 可以返回false或者记录错误日志,避免执行错误SQL
        log_message('warning', 'user_has_right called with invalid usr_id: ' . $usr_id);
        return false;
    }
    
    // 使用查询构造器执行查询,自动处理转义和语法
    $query = $CI->db->get_where('tbl_user_rights', ['usr_id' => $usr_id]);
    
    // 后续的权限判断逻辑...
}

2. 排查Chrome环境下的会话丢失问题

其他浏览器正常、Chrome偶尔出问题,很大可能是Chrome的会话(Session)偶尔丢失,导致usr_id无法从会话中获取。你可以做这些检查:

  • 测试Chrome隐私模式下是否还会出现错误:如果隐私模式正常,说明是普通模式下的缓存或Cookie设置问题,建议用户清除Chrome的缓存和Cookie(快捷键Ctrl+Shift+Delete)。
  • 检查网站的Session Cookie配置:确保CodeIgniter的config.php中$config['sess_cookie_name']、$config['sess_expiration']、$config['sess_domain']等参数配置正确,Chrome对第三方Cookie的限制可能会影响Session的保存。

3. 增加日志排查,定位偶现问题的触发场景

因为问题是偶尔出现的,建议在函数中增加日志记录,方便下次出现时定位原因:

// 在函数开头添加日志,记录调用时的usr_id值
log_message('debug', 'user_has_right triggered with right_key: ' . $right_key . ', usr_id: ' . $usr_id);

之后查看CodeIgniter的日志文件(默认在application/logs/目录),就能知道错误出现时usr_id到底是空值还是其他异常值,进一步缩小排查范围。

4. 检查AJAX请求的缓存问题(如果涉及)

如果user_has_right是通过AJAX调用的,Chrome默认会缓存GET请求,可能导致旧的请求数据被重复使用,从而出现usr_id为空的情况。可以在AJAX请求中添加cache: false:

// 示例jQuery AJAX请求
$.ajax({
    url: '/your/url',
    type: 'GET',
    cache: false, // 禁用缓存
    data: { right_key: 'xxx', usr_id: 'xxx' },
    success: function(res) {
        // 处理结果
    }
});

内容的提问来源于stack exchange,提问作者News Dozens

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:08:40