1
我正在使用CodeIgniter在我的數據庫中插入記錄。一切都運行完美,除非我似乎無法理解爲什麼嵌套數組的值在第一個foreach循環後失去其值。爲什麼我的變量數據在第一個foreach循環後丟失?
PHP
// $data is all data (array) passed from controller method.
public function create($data)
{
$my_data = array(
'name' => $data['name'],
....
);
if ($this->db->insert('myTable', $my_data)) {
$insert_id = $this->db->insert_id();
// $data['mySecondCheckbox'] has value here
foreach ($first_data['myFirstCheckbox'] as $cb1) {
$first_data = array(
'fk_foo_id' => $insert_id,
'fk_cb_id' => $cb1
);
$this->db->insert('mySecondTable', $first_data);
}
// $data['mySecondCheckbox'] has no value here
foreach ($data['mySecondCheckbox'] as $cb2) {
$second_data = array(
'fk_foo_id' => $insert_id,
'fk_cb_id' => $cb2
);
$this->db->insert('myThirdTable', $second_data);
}
return $insert_id;
} else {
return false;
}
}
SOLUTION
謝謝@約翰!睡覺後很明顯。當時,我在想每個each
範圍內的$數據都是特定的。
PHP
// $data is all data (array) passed from controller method.
public function create($data)
{
$my_data = array(
'name' => $data['name'],
....
);
if ($this->db->insert('myTable', $my_data)) {
$insert_id = $this->db->insert_id();
// $data['mySecondCheckbox'] has value here
foreach ($data['myFirstCheckbox'] as $cb1) {
$first_data = array(
'fk_foo_id' => $insert_id,
'fk_cb_id' => $cb1
);
$this->db->insert('mySecondTable', $first_data);
}
// $data['mySecondCheckbox'] has no value here
foreach ($second_data['mySecondCheckbox'] as $cb2) {
$data = array(
'fk_foo_id' => $insert_id,
'fk_cb_id' => $cb2
);
$this->db->insert('myThirdTable', $second_data);
}
return $insert_id;
} else {
return false;
}
}
我很好奇這種方法。我不遵循你所說的話。我已經更新了我的問題,以反映我給了@John建議的內容。我將如何批量插入兩個複選框組?它們不同,並有不同數量的輸入。 – Damon