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

CodeIgniter中set_flashdata失效求助:数据入库成功但无提示

排查CodeIgniter Flashdata不显示的问题

嘿,我看你已经搞定了数据插入,但flashdata的提示死活不出来,这几个细节应该是问题的关键,咱们一个个捋清楚:

1. Session实例的大小写错误 + 加载时机问题

你在插入成功后才加载session库,还犯了个大小写的低级错误:

$this->load->library('session');
$this->Session->set_flashdata('success', 'successfully added');

CodeIgniter里的session实例是小写的$this->session,大写的Session会直接导致调用失败——flashdata根本就没被存进去!

另外,session库建议提前自动加载,去application/config/autoload.php里把session加入自动加载列表:

$autoload['libraries'] = array('session');

这样就不用在控制器里每次手动加载,也能避免遗漏初始化的问题。

2. 直接调用方法而非重定向,导致flashdata未触发

你插入成功后直接调用$this->welcome();,这是在同一个HTTP请求里直接渲染视图。但CodeIgniter的flashdata是为下一次请求设计的,同一个请求里设置的flashdata,当前视图根本读不到。

正确操作应该用redirect()跳转到welcome页面:

if ($submit >0) {
    $this->session->set_flashdata('success', 'successfully added');
    redirect('Registrationc/welcome'); // 替换成你实际的welcome方法路由
}

这样浏览器会发起新的请求,flashdata就能被视图正确读取了。

3. 表单Action里的多余空格

你的视图form action里有个不该存在的空格:

action="<?php echo base_url(); ?> index.php/Registrationc/add_patient"

base_url()后面的空格会让URL变成http://你的域名/ index.php/...,虽然你说数据能插入,但这个问题可能导致后续请求异常,赶紧去掉空格:

action="<?php echo base_url('index.php/Registrationc/add_patient'); ?>"

如果你的config里已经设置$config['index_page'] = '';,还能简化成:

action="<?php echo base_url('Registrationc/add_patient'); ?>"

4. 模型调用的拼写不一致

你控制器里加载的模型是addpatientM,但调用的时候用的是$this->addpatients:

$this->load->model('addpatientM');
// ...
$submit = $this->addpatients->insert_patient (...);

虽然你说数据插入成功了,但这大概率是你输入代码时的笔误,建议统一模型名称,避免后续出问题。

额外优化:视图里的flashdata显示逻辑

可以给提示信息加个判断和样式,让它更直观:

<?php if($this->session->flashdata('success')): ?>
    <div class="alert alert-success">
        <?php echo $this->session->flashdata('success'); ?>
    </div>
<?php endif; ?>

这样只有当flashdata存在时才显示,不会出现空内容。

按照上面的步骤修改后,应该就能正常看到成功提示啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:38:03