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
If you use Codeigniter 3.0 or higher, you might want to consider using "$this->db->replace()". According to the user guide:
"This method executes a REPLACE statement, which is basically the SQL standard for (optional) DELETE + INSERT, using PRIMARY and UNIQUE keys as the determining factor. In our case, it will save you from the need to implement complex logics with different combinations of select(), update(), delete() and insert() calls."
In other words,
Just use it straight out of the box like:
$data = array(
'title' => 'My title',
'name' => 'My Name',
'date' => 'My date'
);
$this->db->replace('table', $data);
No batteries required!!!
I'm using this approach:
configure your table mytable
with unique id
and unique
key for the column xyz
, which you want to update
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
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);
};