同一参数提交多值:如何实现数据库两行数据更新?
如何提交多个同名输入框的值并插入多行数据库记录?
嘿,我来帮你搞定这个问题!你现在的核心问题是:两个同名的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
相关产品推荐
相关产品推荐

