CodeIgniter动态表单提交后print_r重复输出问题该如何解决
问题原因
你的代码错误在于将数组打印和数据库批量插入的逻辑放在了for循环内部,导致每新增一条数组元素就执行一次打印和插入操作。同时print_r函数默认会返回布尔值true,输出时会被转为1,这就是你看到每次数组输出后多了个1的原因。
除此之外,循环内调用insert_batch还会导致数据库重复插入数据,提交3条数据的话最终数据库会存入6条数据,这是需要修复的隐藏问题。
修复后的代码
public function inputData(){ $provinsi = $this->input->post('provinsi'); $res = array(); for ($i=0; $i < count($provinsi); $i++) { $res[] = array( 'id_finance' => '1', 'provinsi' => $provinsi[$i], ); } // 插入和打印逻辑移到for循环外部,等所有数据组装完成后再执行 $this->db->insert_batch('lokasi', $res); echo "<pre>"; print_r($res); }
说明
修改后仅在for循环内完成所有待插入数据的组装,循环结束后再一次性执行批量插入和打印操作,就能得到仅输出一次的完整数组,同时也避免了数据库重复插入的问题。
内容的提问来源于stack exchange,提问作者Gusti
相关产品推荐
相关产品推荐

