MYSQL INSERT IGNORE di CodeIgniter

Jumat, 25 Mei 2012 | 07:52

Query Mysql INSERT sudah bayak yang mengetahui, namun pada query INSERT apabila terjadi duplikasi key akan menimbulkan error. Pada beberapa kasus untuk membuat data rekapitulasi ataupun data yang tidak mentolerrir adanya duplikasi data dapat menggunakan query INSERT IGNORE. Sintak dan keterangan lebih lanjut tentang INSERT IGNORE dapat dilihat di http://dev.mysql.com/doc/refman/5.5/en/insert.htm
Terkadang dalam mengolah data Mysql query INSERT IGNORE sangat diperlukan, akan tetapi pengguna CI belum dapat menggunakan fitur ini karena metode $this->db->insert(); hanya berisi 2 parameter yaitu nama tabel untuk paremeter pertama dan data untuk parameter kedua. Sebenarnya query itu dapat dieksekusi menggunakan $this->db->query(), namun untuk memperingkas script saya menambah beberapa script di class database CI.

Pertama saya ubah file di system/database/DB_active_rec.php pada fungsi insert()

function insert($table = '', $set = NULL, $is_ignore = FALSE)
{
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->_insert($this->_protect_identifiers($table, TRUE, NULL, FALSE), array_keys($this->ar_set), array_values($this->ar_set), $is_ignore);

$this->_reset_write();
return $this->query($sql);
}

© 2014 Unit Pelaksana Teknis TIK. All rights reserved.
LOGIN | SITEMAP