Php 使用CodeIgniter上的代码更新数据而不删除旧文件

Php 使用CodeIgniter上的代码更新数据而不删除旧文件,php,codeigniter,Php,Codeigniter,我有如下示例中的数据,当我尝试添加新数据时,我想在id02上添加名称philips,但在我更新名称ana后,jack将被删除,并存储名称philips,有没有其他方法可以在不删除旧数据的情况下使用as add one name更新表 id | name | class -------------------------------------- 01 | smith, john, billy | III 02 | ana, jack,

我有如下示例中的数据,当我尝试添加新数据时,我想在
id
02
上添加名称
philips
,但在我更新名称
ana后,jack
将被删除,并存储名称
philips
,有没有其他方法可以在不删除旧数据的情况下使用as add one name更新表

 id   |         name       |  class
--------------------------------------
 01   | smith, john, billy |   III
 02   | ana, jack,         |   IV
控制器

$id = $this->uri->segment(3);;
$this->my_model->update_name($id);
模型

function update_name($id) {
    $data = array(                  
        'name' => $this->input->post('name'));              
    $this->db->where('id', $id);
    $this->db->update('mytable', $data);
}

我认为这里有两个选项,第一个是从字段中收集信息,并使用PHP将两个字符串连接在一起

$current_names = $this->db->select( 'name' )->from( 'mytable' )-.where( 'id', $id )->get()->result();
$new_names = $current_names.', '.$this->input->post( 'name' );

function update_name($id) {
    $data = array(                  
                  'name' => $new_names
                 );              
    $this->db->where('id', $id);
    $this->db->update('mytable', $data);
}
第二个是使用更传统的sql语句和concat,我还没有测试过,但是类似的东西应该可以工作

$query = 'UPDATE  `mytable` SET name = CONCAT(`name`, ' ;
$query .=  ",'$this->input->post( 'name' )'";
$query .= ') WHERE `id` = ' . $id;
$this->db->query($query);

这种方法是从这里开始的,虽然它是CI2,但应该仍然有效,

我认为这里有两种选择,第一种是从字段收集信息,并使用PHP将两个字符串连接在一起

$current_names = $this->db->select( 'name' )->from( 'mytable' )-.where( 'id', $id )->get()->result();
$new_names = $current_names.', '.$this->input->post( 'name' );

function update_name($id) {
    $data = array(                  
                  'name' => $new_names
                 );              
    $this->db->where('id', $id);
    $this->db->update('mytable', $data);
}
第二个是使用更传统的sql语句和concat,我还没有测试过,但是类似的东西应该可以工作

$query = 'UPDATE  `mytable` SET name = CONCAT(`name`, ' ;
$query .=  ",'$this->input->post( 'name' )'";
$query .= ') WHERE `id` = ' . $id;
$this->db->query($query);

这种方法就是从这里开始的,虽然它是CI2,但它仍然可以工作,

您可以使用MySQL
CONCAT()
,在您的情况下,它将是这样的:

function update_name($id) {
    $name = $this->input->post('name');                  

    $this->db->set('name', "CONCAT(name,', ','".$name."')", FALSE);
    $this->db->where('id', $id);
    $this->db->update('mytable', $data);
}

附言:最好不要访问模型中的post输入,而应该在控制器中验证它,然后将其作为参数传递给模型。

您可以使用MySQL
CONCAT()
,在您的情况下,它将如下所示:

function update_name($id) {
    $name = $this->input->post('name');                  

    $this->db->set('name', "CONCAT(name,', ','".$name."')", FALSE);
    $this->db->where('id', $id);
    $this->db->update('mytable', $data);
}

注意:最好不要访问模型中的post输入,而是应该在控制器中验证它,然后将其作为参数传递给模型。

Concat现有值与新值。例如:updatemytable SET column=CONCAT(column,,,,'NEW_value'),其中CONDTN;将现有值与新值合并。例如:updatemytable SET column=CONCAT(column,,,,'NEW_value'),其中CONDTN;非常感谢你的回答更简单,我的问题也解决了。非常感谢你的回答更简单,我的问题也解决了。谢谢你的回答,但这些答案让我更容易理解,你的回答也非常有助于用其他方法解决我的问题,并增加了我的知识。谢谢你的回答,但是答案我更容易理解,你的答案也非常有助于用其他方法解决我的问题,并且增加了我的知识。