CodeIgniter表单多选框提交多条数据仅单条入库问题排查
问题原因
- 核心错误是数据组装逻辑的位置写在了遍历查询结果的循环之外:
- 遍历
$generateawb多行结果时,$clientid、$batchnumber两个变量每次循环都会被新的行数据覆盖,循环结束后仅保留最后一行的对应值 - 仅在循环结束后向
$data数组中推送了一次数据,导致$data数组永远只有1条待插入记录,调用insert_batch自然只会插入1条数据
- 遍历
- 额外注意:如果业务要求每条插入的记录生成独立的AWB编号,生成随机AWB的逻辑也需要放到循环内部;如果同批次选中的记录共用同一个AWB编号,生成逻辑可以保留在循环外。
修正后的控制器代码
public function generateawb() { $data = array(); if(isset($_POST['savemedaa'])) { $checkboxs = $_POST['generateawb']; $generateawb = $this->excel_import_model->selectawb($checkboxs); // 如果同批次选中的记录需要共用同一个AWB,生成逻辑放这里 // $awbg = random_int(100000000, 999999999); // $awb='LRG'.$awbg; foreach($generateawb as $row){ // 如果每条记录需要独立的AWB,生成逻辑放这里 $awbg = random_int(100000000, 999999999); $awb='LRG'.$awbg; // 每次循环都组装一条数据插入到$data数组 $data[] = array( 'clientid'=> $row->id, 'awb'=> $awb, 'batchnumber'=> $row->batchnumber, ); } $this->excel_import_model->generateawb($data); } }
内容的提问来源于stack exchange,提问作者Pirate T.V
相关产品推荐
相关产品推荐

