Обновление данных без удаления старых файлов с кодом CodeIgniter

У меня есть данные, подобные приведенному ниже примеру, когда я пытаюсь добавить новые данные, в примере я хочу добавить имя 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); } 

Вы можете использовать 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); } 

PS: Лучше не обращаться к вашему сообщению в вашей модели, вместо этого вы должны проверить его в своем контроллере, а затем передать его в свою модель в качестве параметра.

Я думаю, у вас есть два варианта: сначала нужно собрать информацию из поля и использовать 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, он все равно должен работать, Codeigniter 2.1 – MySQL CONCAT (добавить строку)