CodeIgniter- active record insert if new or update on duplicate

前端 未结 8 736
醉酒成梦
醉酒成梦 2020-12-29 04:46

Is it possible to do an active record query in CodeIgniter that will update an existing record if one already exists or insert if it doesnt, for the given k

8条回答
  •  春和景丽
    2020-12-29 05:47

    I'm using this approach:

    1. configure your table mytable with unique id and unique key for the column xyz, which you want to update

    2. try to insert an array $data, using INSERT IGNORE INTO do avoid duplicates

      $insert_query = $this->db->insert_string('bt_ical_list', $data);
      $insert_query = str_replace('INSERT INTO','INSERT IGNORE INTO',$insert_query);
      $this->db->query($insert_query); 
      

      this inserts a row, if value in column xyz doesn't exist

    3. use function insert_id() to return an id if row was inserted, update if no row was inserted.

      if(!$this->db->insert_id()){
          $query=$this->db    ->where('xyz', $data['xyz'])
                              ->update('my_table',$data);
      };  
      

提交回复
热议问题