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

同一参数提交多值:如何实现数据库两行数据更新?

如何提交多个同名输入框的值并插入多行数据库记录?

嘿,我来帮你搞定这个问题!你现在的核心问题是:两个同名的campaign_name输入框提交后,后端只会拿到最后一个值,没法生成两行数据库记录。我们只需要调整前端和后端的代码逻辑,让它们支持数组形式的参数传递,就能实现需求。

第一步:修改前端输入框的name属性

把输入框的name改成数组格式campaign_name[],这样表单提交时会自动把两个输入值打包成一个数组发送给后端:

<input name="campaign_name[]" value="campaign_name_1" class="form-control" type="text">
<input name="campaign_name[]" value="campaign_name_2" class="form-control" type="text">

第二步:调整后端ajax_update方法处理数组

在CodeIgniter的控制器方法里,我们需要接收这个数组,然后通过循环插入或批量插入的方式把数据写入数据库。

方式一:循环插入单条数据(适合需要单独验证每条数据的场景)

public function ajax_update() {
    // 接收数组形式的campaign_name参数
    $campaign_names = $this->input->post('campaign_name');
    
    // 先判断是否接收到有效数组
    if (is_array($campaign_names) && !empty($campaign_names)) {
        foreach ($campaign_names as $name) {
            // 可选:过滤空值,避免插入无效数据
            $clean_name = trim($name);
            if (!empty($clean_name)) {
                $data = [
                    'campaign_name' => $clean_name
                ];
                // 调用模型的插入方法,这里假设你的模型是$this->cs,插入方法为insert_single_campaign
                $this->cs->insert_single_campaign($data);
            }
        }
        // 返回JSON响应给前端
        echo json_encode(['status' => 'success', 'msg' => '两行数据已成功插入']);
    } else {
        echo json_encode(['status' => 'error', 'msg' => '未接收到有效数据']);
    }
}

对应的模型辅助方法(如果你的模型还没有这个方法):

public function insert_single_campaign($data) {
    // 替换成你实际的数据库表名
    return $this->db->insert('your_campaign_table', $data);
}

方式二:批量插入数据(效率更高,适合无需单独处理的场景)

public function ajax_update() {
    $campaign_names = $this->input->post('campaign_name');
    
    if (is_array($campaign_names) && !empty($campaign_names)) {
        $insert_batch = [];
        foreach ($campaign_names as $name) {
            $clean_name = trim($name);
            if (!empty($clean_name)) {
                $insert_batch[] = [
                    'campaign_name' => $clean_name
                ];
            }
        }
        
        if (!empty($insert_batch)) {
            // 使用CodeIgniter内置的批量插入方法
            $this->db->insert_batch('your_campaign_table', $insert_batch);
            echo json_encode(['status' => 'success', 'msg' => count($insert_batch).'行数据已批量插入']);
        } else {
            echo json_encode(['status' => 'error', 'msg' => '没有有效数据可以插入']);
        }
    } else {
        echo json_encode(['status' => 'error', 'msg' => '未接收到数据']);
    }
}

额外注意事项

  • 确保你的表单是通过POST方法提交的,否则$this->input->post()无法获取到数据
  • 可以根据业务需求添加数据验证规则,比如检查campaign_name的长度、格式是否合法
  • 如果是AJAX提交,大部分前端库(如jQuery、Axios)会自动处理数组格式的表单数据,无需额外配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:59:52