2015-09-06 209 views
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; 
    } 

} 
+0

我很好奇這種方法。我不遵循你所說的話。我已經更新了我的問題,以反映我給了@John建議的內容。我將如何批量插入兩個複選框組?它們不同,並有不同數量的輸入。 – Damon

回答

2

在您的foreach循環的第一行是重新在循環 「$ DATA」 的主題。重命名變量,你應該很好

+0

謝謝!睡後很明顯。 – Damon

相關問題