Simplesmente adicione a seguinte função ao seu sistema / banco de dados / arquivo rec.php ativo do banco de dados :
/**
* public function on_duplicate
* Compiles an on duplicate key update string and runs the query
*
* @access public
* @param string - the table to retrieve the results from
* @param array - an associative array of update value
* @return object
*/
function on_duplicate($table = '', $set = NULL )
{
if ( ! is_null($set))
{
$this->set($set);
}
if (count($this->ar_set) == 0)
{
if ($this->db_debug)
{
return $this->display_error('db_must_use_set');
}
return FALSE;
}
if ($table == '')
{
if ( ! isset($this->ar_from[0]))
{
if ($this->db_debug)
{
return $this->display_error('db_must_set_table');
}
return FALSE;
}
$table = $this->ar_from[0];
}
$sql = $this->_duplicate_insert($this->_protect_identifiers($this->dbprefix.$table), $this->ar_set );
$this->_reset_write();
return $this->query($sql);
}
Em seguida, chame usando a notação Active Record como em seu modelo:
$this->db->on_duplicate('database_table', $array);
Isso atualizará todos os detalhes em uma matriz para uma linha onde a chave primária já existe. Se não existir, ele irá adicioná-lo para você!