2017-06-20 42 views
0

我收到此錯誤「陣」錯誤:未知列在「字段列表」(笨)

未知列在「字段列表」陣'

當插入複選框列表進入數據庫。當我做print_array我得到這個結果:

Array 
(
    [0] => Array 
     (
      [user_id] => 3 
      [project_id] => 10 
      [project_type] => 5 
      [project_list] => Array 
       (
        [0] => 17 
        [1] => 18 
       ) 

     ) 

) 

應該的project_list值要插入到數據庫中的一個新行。

我的看法<input type="checkbox" value="<?php echo $project_list['id']; ?>" name="project_list[]">從數據庫填充。

我的控制器$this->Project_module->createProject($_POST['project_list']);

我模塊

public function createProject($project_list){ 

    if($project_list != null){ 

     $data = array(); 

     foreach($project_list as $project_list){ 
      $data[] = array(
       'user_id'   => $this->getUserId(), 
       'project_id'  => $this->getProjectId(), 
       'project_type'  => $this->getProjectType(), 
       'project_list'  => $this->getProjectList(), 
      ); 
     } 

     $this->db->insert_batch('tblProject', $data); 

     if($this->db->affected_rows()){ 
      return true; 
     } else { 
      return false; 
     } 

    } 

} 

編輯 我是編輯我的foreach這樣

foreach($project_list as $row){ 
    $data = array(
     'user_id'   => $this->getUserId(), 
     'project_id'  => $this->getProjectId(), 
     'project_type'  => $this->getProjectType(), 
     'project_list'  => $this->getProjectList(), 
    ); 
} 

但是,我還是GETT同樣的錯誤。

+0

在你的foreach只需添加'$ data'而不是'$ data []'並且改變你的foreach變量 – Nawin

+0

@Nawin我改變了它,但仍然是同樣的錯誤。 –

+0

$ this-> getProjectList()返回一個數組,並且您試圖將該數組作爲字段放入您的數據庫中。所以implode(',',$ this-> getProjectList())會解決它,但你可能想將它們保存在另一個表 – verhie

回答

0

你已經通過project_list所以你不想再次獲取列表。你可以存儲只有foreach字符串。在與$data$data[]我身邊混亂因此,與兩個測試,並讓我知道.... 請表字段前檢查是否正確

public function createProject($project_list){ 

    if($project_list != null){ 

     $data = array(); 

     foreach($project_list as $row){ 
      $data[] = array(
       'user_id'   => $this->getUserId(), 
       'project_id'  => $this->getProjectId(), 
       'project_type'  => $this->getProjectType(), 
       'project_list'  => $row, 
      ); 
     } 

     $this->db->insert_batch('tblProject', $data); 

     if($this->db->affected_rows()){ 
      return true; 
     } else { 
      return false; 
     } 

    } 

} 
4

Linundus,你需要爲foreach中的數組別名命名不同的東西。你有

foreach ($project_list as $project_list) 

,你需要有這樣的事情:

foreach($project_list as $list) 
+0

我改變了我的變量,但仍然得到錯誤。檢查我編輯的問題。謝謝 –

+0

$ project_list從哪裏來?你可以var_dump並提供一個數組結構的例子嗎? – Jase

0

我已經解決了這個問題,這裏是我的編碼是工作現在好了。

錯誤原因

控制器我已經設置的複選框setter方法是這樣的:

$this->Project_module->setProjectList($this->input->post('project_list'));

,然後後調用createProject功能是這樣的:

$this->Project_module->createProject($_POST['project_list']);

所以我得到錯誤與我的模塊內的foreach。

SOLUTION

在控制器

  1. 刪除此行

    $this->Project_module->setProjectList($this->input->post('project_list'));

  2. 只需保持在管線

    所有複選框值

    $this->Project_module->createProject($_POST['project_list']);

而在模塊

public function createProject($project_list){ // $_POST['project_list'] value pass in $project_list 

    if($project_list != null){ 

     $data = array(); 

     foreach($project_list as $row){   // Do foreach to insert every value in different rows in database 
      $data[] = array(
       'user_id'   => $this->getUserId(), 
       'project_id'  => $this->getProjectId(), 
       'project_type'  => $this->getProjectType(), 
       'project_list'  => $row, 
      ); 
     } 

     $this->db->insert_batch('tblProject', $data); 

     if($this->db->affected_rows()){ 
      return true; 
     } else { 
      return false; 
     } 

    } 

} 
+0

我也說這個權利嗎? – Nawin

+0

你沒有在你的問題中提到這一行,所以我們不知道'$ this-> Project_module-> setProjectList($ this-> input-> post('project_list'));' – Nawin

+0

@Nawin對,並且抱歉那。我沒有意識到 –

0
Array 
(
    [0] => Array 
     (
      [user_id] => 3 
      [project_id] => 10 
      [project_type] => 5 
      [project_list] => Array 
       (
        [0] => 17 
        [1] => 18 
       ) 

     ) 

) 

你的價值是在套疊的鍵0,所以如果你想訪問你PROJECT_ID將不得不使用$array[0]['project_id']

這裏的一個建議是檢查key 0中的值是否爲ex ist然後打印

相關問題