Cara Menyimpan Emoticon di Database MySQL dan Konfigurasinya di CodeIgniter 3

Tidak ada hal yang istimewa dengan cara menyimpan emoticon di database MySQL. Namun, saya yakin masih banyak yang belum mengetahuinya.

Saya sendiri juga semalam mengalami sedikit masalah karena ternyata sebuah column di database yang saya buat tidak dapat menyimpan emoticon.

Hal ini tentunya menjadi perhatian, karena ketika ingin menyimpan emoticon seperti di bawah ini:

😁😁😁

Ternyata yang tersimpan adalah karakter berbentuk tanda tanya

(?????????)

Cara Menyimpan Emoticon di Database MySQL

Untuk menyimpan emoticon, kita perlu menyesuaikan charset dan collation dari database yang kita buat.

Setelah melakukan hal di bawah ini, kamu bisa menyimpan emoticon seperti pada gambar berikut:

adminer database charset mysql

Untuk melakukannya, kita perlu mengubah charset dan collation dengan syntax SQL seperti ini:

ALTER DATABASE
    database_name
    CHARACTER SET = utf8mb4
    COLLATE = utf8mb4_unicode_ci;


ALTER TABLE
    table_name
    CONVERT TO CHARACTER SET utf8mb4
    COLLATE utf8mb4_unicode_ci;

Syntax yang paling atas, digunakan untuk mengubah charset dan collation dari database. Sementara syntax yang kedua digunakan untuk mengubah charset dan collation dari table.

Sebenarnya tidak perlu semua table kita ubah. Terkadang, jika kita memiliki value dari dan column yang sangat panjang, maka akan muncul error seperti ini:

Error in query (1118): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs

Untuk itu, kita bisa mengubah hanya column tertentu saja. Tentunya yang digunakan untuk menyimpan emoticon.

Konfigurasi Charset dan Collation di CodeIgniter 3

Setelah mengubah database dan table, konfigurasi juga perlu dilakukan di sisi aplikasi. Jika kamu menggunakan CodeIgniter, ada beberapa config yang harus kamu sesuaikan.

Buka file config.php yang ada di application/config/database.php. Selanjutnya, sesuaikan konfigurasi ini ya:

Sebelumnya:

$db['default'] = array(
	'dsn'	=> '',
        'port'  => '3306',
	'hostname' => 'localhost',
	'username' => 'root',
	'password' => 'password',
	'database' => 'nama_databasemu',
	'dbdriver' => 'mysqli',
	'dbprefix' => '',
	'pconnect' => FALSE,
	'db_debug' => (ENVIRONMENT !== 'production'),
	'cache_on' => FALSE,
	'cachedir' => '',
	'char_set' => 'utf8',
	'dbcollat' => 'utf8_general_ci',
	'swap_pre' => '',
	'encrypt' => FALSE,
	'compress' => FALSE,
	'stricton' => FALSE,
	'failover' => array(),
	'save_queries' => TRUE
);

Perhatikan pada bagian char_set dan collation, kamu harus mengubahnya menjadi:

'char_set' => 'utf8mb4',

sedangkan untuk dbcollat menjadi:

'dbcollat' => 'utf8mb4_unicode_ci',

Dua hal di atas, jika sudah kamu lakukan, maka kamu bisa menguji lagi aplikasimu, pastinya emoticon sudah tersimpan dengan baik.

Demikian tutorial cara menyimpan emoticon di CodeIgniter. Semoga bermanfaat.

Leave a Comment