我有以下示例的数据,当我尝试添加新数据时,我希望在philips
id
上添加名称02
但我更新名称后的示例要删除ana, jack
并存储名称philips
,是否有其他方法可以在不删除旧数据的情况下添加一个名称来更新表格?
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);
}
答案 0 :(得分:1)
我认为你有两个选择,第一个是从字段中收集信息并使用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);
}
第二种是使用带有concat的更传统的sql语句,我没有对此进行过测试,但是接近这一点应该有用。
$query = 'UPDATE `mytable` SET name = CONCAT(`name`, ' ;
$query .= ",'$this->input->post( 'name' )'";
$query .= ') WHERE `id` = ' . $id;
$this->db->query($query);
这种方法是从这里开始的,尽管它是CI2,它仍然可以工作,Codeigniter 2.1 - MySQL CONCAT (append string)
答案 1 :(得分:1)
您可以使用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);
}
P.S:最好不要在模型中访问您的帖子输入,而应该在控制器中对其进行验证,然后将其作为参数传递给您的模型。