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

CodeIgniter 3中$this->session->userdata('user_id')无效,id_user存为null怎么解决?

解决CodeIgniter 3中lowongan表id_user存入null的问题

以下是逐一排查和解决的步骤:

1. 确认Session是否正常加载且user_id存在

  • 检查Session库加载状态:
    打开application/config/autoload.php,确认$autoload['libraries']数组包含'session';如果没有,要么修改autoload配置,要么在store_lowongan方法开头添加$this->load->library('session');。
  • 调试Session中的user_id值:
    在控制器的store_lowongan方法里,获取user_id后立刻打印调试:
    $id_user = $this->session->userdata('user_id');
    var_dump($id_user); // 查看输出是否为null
    exit;
    
    如果输出是null,说明用户登录时没有把user_id写入Session。需要补充登录逻辑,登录成功后执行:
    // 假设登录时从users表查询到用户数据$user
    $this->session->set_userdata('user_id', $user->user_id);
    

2. 检查数据库表字段设置

  • 核对lowongan表的id_user字段:
    • 字段名称是否和代码中的id_user完全一致(注意Linux环境下MySQL区分表名/字段名大小写);
    • 字段类型是否和users表的user_id匹配(比如均为INT类型);
    • 如果业务上id_user是必填项,检查字段是否设置为NOT NULL,避免无值时存入null。

3. 查看实际执行的SQL语句

在调用模型插入数据后,打印最后执行的SQL,确认id_user是否被正确传入:

$this->m_lowongan->input_data($data, 'lowongan');
echo $this->db->last_query(); // 输出完整的INSERT语句
exit;

如果SQL中id_user的值是NULL,说明$data['id_user']本身就是null,回到第一步排查Session问题;如果SQL里有正确数值,检查数据库是否有触发器或其他规则导致值被覆盖。

4. 排除其他覆盖逻辑

  • 确认模型的input_data方法没有对传入的$data做过滤或修改(你的模型代码无相关操作,可快速跳过);
  • 检查表单是否有同名的id_user隐藏字段,避免意外覆盖Session取值(你的代码从Session取值,不受POST值影响,可作为补充验证)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 11:05:46