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

CodeIgniter框架中Colaborador控制器index方法执行时意外插入数据库记录的问题求助

排查与解决自动插入数据库记录的异常问题

让我们一步步拆解这个奇怪的问题——明明只调用了Colaborador->index(),却自动插入了6条记录,而且插入逻辑只应该在点击注册按钮触发cadastrarquestao()时执行。以下是具体的排查方向和解决思路:

1. 检查模板及子视图是否意外触发插入逻辑

你的index()方法只是加载了模板和app/enviar-questao视图,但模板里还嵌套加载了app/header、app/topo、app/menu这些子视图。这些子视图里很可能隐藏了触发插入的代码:

  • 打开这几个子视图文件,看看有没有直接调用$this->simulado->envioquestao()的PHP代码;
  • 检查是否有表单设置了autosubmit属性,或者通过JS自动提交了指向colaborador/cadastrarquestao的请求;
  • 甚至可能是子视图里的某个资源URL写错了(比如图片、脚本路径),误指向了cadastrarquestao接口,导致浏览器加载页面时多次发送请求触发插入。

2. 排查全局钩子与权限控制库的间接触发

在Colaborador的构造函数里,你调用了$this->controle_acesso->acesso();,同时也要检查CodeIgniter的全局钩子配置:

  • 打开application/config/hooks.php,看看有没有配置在控制器方法执行前后自动运行的钩子脚本,这些脚本会不会间接调用了envioquestao();
  • 查看controle_acesso库的acesso()方法源码,确认它是否在权限验证过程中意外触发了simulado模型的插入逻辑。

3. 利用Profiler和日志定位调用次数

你已经开启了CodeIgniter的Profiler($this->output->enable_profiler(TRUE);),可以直接通过它来分析:

  • 查看Profiler中的Queries板块,找到INSERT INTO teste语句,看看它执行了几次,每次执行的上下文信息;
  • 为了更精准追踪,在simulado_model->envioquestao()方法里添加日志代码:
    public function envioquestao($dados) {
        log_message('debug', 'envioquestao被触发!用户ID:'.$this->session->userdata('id_usuario'));
        $data = [
            'Id_usuario' => $this->session->userdata('id_usuario'),
        ];
        $this->db->insert('teste',$data);
    }
    
    然后打开application/logs下的日志文件,就能看到这个方法被调用了几次,以及调用的时间点,帮你定位触发源头。

4. 检查路由配置是否有误

打开application/config/routes.php,确认没有错误的路由规则把index请求导向了cadastrarquestao:

  • 比如有没有类似$route['colaborador'] = 'colaborador/cadastrarquestao';这种错误配置,导致访问colaborador/index时实际执行了cadastrarquestao方法。

5. 排查浏览器端的自动请求

打开浏览器开发者工具(F12),切换到Network标签,然后刷新页面:

  • 观察所有请求,看看是否有6次指向colaborador/cadastrarquestao的请求;
  • 如果有,检查请求的发起者是哪个资源(比如脚本、图片、iframe),修正对应的URL即可。

总结思路

因为envioquestao()每次调用只会插入1条记录,现在出现6条,说明这个方法被调用了6次。核心就是找到谁在调用这个方法——从模板子视图、全局逻辑、路由、浏览器请求这几个方向逐一排查,很快就能定位问题啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 15:42:28