2017-07-26 34 views
1

代碼:如何在codeigniter中使用concat函數更新?

if($this->input->post('submit')) 
{ 

    $data = array(
      'admin_id' => $this->input->post('admin'), 
      ); 
    $this->db->select('*'); 
    $this->db->from('assign_menu_admin'); 
    $query = $this->db->get(); 
    $result = $query->result_array(); 
    foreach ($result as $row) 
    { 
     $where = "menu_link = '".$row['menu_link']."'"; 
     $this->db->where($where); 
     $this->db->set('admin_id', "CONCAT(admin_id,',','".$data."')", FALSE); 
     $query = $this->db->update('assign_menu_admin'); 
     echo $this->db->last_query(); 
    } 
} 

在這段代碼中我有一個有表名assign_menu_admin和admin_id名稱欄裏面。現在,我想使用concat函數來顯示我的admin_id,像這樣1,2,3,4,但它顯示錯誤。我該如何解決這個錯誤?請幫助我。

enter image description here

謝謝

+0

的問題並非來自MySQL的'CONCAT'功能,但是從'$ data'是一個數組。你必須把它轉換成一個字符串。 – roberto06

回答

0

改變這一行

$this->db->set('admin_id', "CONCAT(admin_id,',','".$data['admin_id']."')", FALSE); 
0

您可以找到以下提到的解決方案。

您正在將數據從php傳遞到數據庫,因此您可以使用implode()函數。

語法

破滅(分離器,陣列)

參數

separator: Optional. Specifies what to put between the array elements. Default is "" (an empty string) 
array : Required. The array to join to a string 

$this->db->set('admin_id', implode(',',$this->input->post('admin'))); 

讓我知道如果它不起作用。

0

使用implode()功能:

$this->db->set('admin_id', implode(",", $data)), FALSE); 

這將膠水用逗號字符每個陣列值一起並返回字符串。

輸出將是:

$this->db->set('admin_id', '1,2,3,4', FALSE); 
0

您也可以簡化你必須:

//columns with data you are updating 
    $data = [ 
     //use php implode function to turn an array into a string with each item separated by a "," 
     'admin_id'=>implode(',', $this->input->post('admin')) 
    ]; 

    //you can also cast an array of where statements as well 
    $this->db->where('menu_link', $row['menu_link']) 
    //table to update, followed by columns and data you are updating 
    ->update('assign_menu_admin', $data); 
+0

它顯示錯誤@Parker戴爾當我回應last_query UPDATE'assign_menu_admin' SET'admin_id' ='CONCAT(admin_id,\',\',\'Array \')'WHERE'menu_link' ='admins/college,admins /管理' – omkara

0

$data您在CONCAT推杆是一個array,你不能像這樣的用戶數組。

替換此行:

$this->db->set('admin_id', "CONCAT(admin_id,',','".$data."')", FALSE); 

這一行:

$this->db->set('admin_id', "CONCAT(admin_id,',','".$data['admin_id']."')", FALSE); 
相關問題