我想使用数组插入多个数据(PHP CodeIgniter)。但我仍然发现错误。错误是数组不清楚
function insert(){
$hitung=count($_POST['pembicara']);
$pengisi=implode(',',$_POST['pembicara']);
$materi=implode(',',$_POST['materi']);
$alasan=implode(',',$_POST['alasan']);
$datapembicara = array(
'id_kegiatan' => $x,
'nama_pembicara' => $pengisi,
'materi' => $materi,
'alasan' => $alasan,
);
$this->m_admin_smf->add_pembicara($datapembicara);
}
当我var_dump显示结果如
时array (size=4)
'id_kegiatan' => int 990550
'nama_pembicara' => string '1,2' (length=9)
'materi' => string '1,2' (length=3)
'alasan' => string '1,2' (length=3)
array (size=4)
'id_kegiatan' => int 990550
'nama_pembicara' => string '1,2' (length=9)
'materi' => string '1,2' (length=3)
'alasan' => string '1,2' (length=3)
结果应该像
array (size=4)
'id_kegiatan' => int 990550
'nama_pembicara' => string '1' (length=9)
'materi' => string '1' (length=3)
'alasan' => string '1' (length=3)
array (size=4)
'id_kegiatan' => int 990550
'nama_pembicara' => string '2' (length=9)
'materi' => string '2' (length=3)
'alasan' => string '2' (length=3)
我该怎么办?
怎么样这样?但显示错误
$hitung = count($_POST['pembicara']);
$datapembicara = array();
for($i = 0; $i < $hitung; $i++) {
$datapembicara[] = array(
'id_kegiatan' => $x,
'nama_pembicara' => $_POST['pembicara'][$i],
'materi' => $_POST['materi'][$i],
'alasan' => $_POST['alasan'][$i],
);
}
$this->m_admin_smf->add_pembicara($datapembicara);
答案 0 :(得分:2)
如果你想在一系列批次中使用它们,那么你将不得不做除implode
以外的其他事情,因为行为将与你需要的行为不同。您可以使用简单的for
循环将这种数组结构创建为一系列批次:
// Controller
function insert()
{
$hitung = count($_POST['pembicara']);
$datapembicara = array();
for($i = 0; $i < $hitung; $i++) {
$datapembicara[] = array(
'id_kegiatan' => $x,
'nama_pembicara' => $_POST['pembicara'][$i],
'materi' => $_POST['materi'][$i],
'alasan' => $_POST['alasan'][$i],
);
}
var_dump($datapembicara);
$this->m_admin_smf->add_pembicara($datapembicara);
}
旁注:我建议使用input
类的codeigniter,因为它可以为你处理XSS。
$value = $this->input->post('value', true); // add true parameter flag
然后在创建所述数组后,您可以使用->insert_batch()
活动记录。它将为您执行多次插入,此外,您的值会自动转义。
// Model
public function add_pembicara($data)
{
$this->db->insert_batch($data);
}