2017-07-26 116 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);