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;非常感谢你的回答更简单,我的问题也解决了。非常感谢你的回答更简单,我的问题也解决了。谢谢你的回答,但这些答案让我更容易理解,你的回答也非常有助于用其他方法解决我的问题,并增加了我的知识。谢谢你的回答,但是答案我更容易理解,你的答案也非常有助于用其他方法解决我的问题,并且增加了我的知识。