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

CodeIgniter 3 保存动态HTML表格数据到数据库报错求助

CodeIgniter 3 保存动态HTML表格数据到数据库报错求助

嘿,我帮你排查了代码里的问题,这几个点应该是导致报错的核心原因,咱们逐个修正:

1. 数据库插入语句的语法错误

你模型里的这行代码有明显问题:

$this->db->insert('event_ticket_prices',$data[]);

insert()方法需要传入一维数组作为单条记录的数据,而$data[]会把原本的一维数组包装成二维数组,框架根本无法正确解析。应该改成:

$this->db->insert('event_ticket_prices',$data);

2. 循环内数组初始化的小细节

虽然你每次循环都给$data的键赋值,但最好在循环内每次都重新初始化$data数组——避免后续扩展字段时,意外残留上一次循环的键值,修改后循环部分如下:

foreach ($price_description as $key => $value) {
    // 每次循环重新初始化数组,避免数据残留
    $data = [];
    $data['event_id'] = $event_insert_id;
    $data['price_description'] = $value;
    $data['price'] = $price[$key];
    $this->db->insert('event_ticket_prices',$data);
}

3. 替换直接使用$_POST的写法

CodeIgniter提供了更安全的输入处理类,建议把直接调用$_POST的写法换成框架方法,避免潜在的安全风险:

$price_description = $this->input->post('description');
$price = $this->input->post('price');

4. 规范事务的使用流程

当前代码只调用了trans_complete(),但缺少事务开启的步骤,完整的事务流程能保证所有插入操作的原子性,避免部分插入成功部分失败的情况:

$this->db->trans_start(); // 开启事务

// 静态数据插入(你的原有代码)
$query_status = $this->db->insert('events', $register_data_array);
$event_insert_id = $this->db->insert_id();

// 动态票价数据插入
$price_description = $this->input->post('description');
$price = $this->input->post('price');

if (!empty($price_description) && !empty($price)) {
    foreach ($price_description as $key => $value) {
        $data = [];
        $data['event_id'] = $event_insert_id;
        $data['price_description'] = $value;
        $data['price'] = $price[$key];
        $this->db->insert('event_ticket_prices', $data);
    }
}

$this->db->trans_complete(); // 完成事务

// 检查事务执行状态
if ($this->db->trans_status() === FALSE) {
    // 事务失败时的处理逻辑,比如返回错误
    return false;
} else {
    return true;
}

额外提醒

你的HTML部分逻辑没问题,但要确保前端点击「Add More」按钮的JS代码,能正确克隆输入框并保持name="description[]"和name="price[]"的命名格式,这样后端才能正确接收到数组形式的参数。

备注:内容来源于stack exchange,提问作者dinesh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 08:03:09