fbpx

Alasan mengapa mysql deprecated ?

Pernah ga buat script coding semacam ini :

 mysql_query(), mysql_connect() or mysql_real_escape_string()

Lalu muncul tiba2 notice mysql deprecated dengan tampilan berikut  ?  :

Pertanyaannya mengapa sih php merekomendasikan tidak menggunakan fungsi mysql lagi ?
Pertanyaan ini  menggugah rasa ingin tahu penulis mengapa sih fungsi yang paling sering digunakan dan paling mudah diingat yakni mysql di php jadi deprecated / dihapuskan pada versi php 5.6.0 dan tidak akan disupport lagi oleh PHP di pengembangan php selanjutnya.

Fungsi yang deprecated ini sangat berdampak sebenarnya bagi banyak develpper atau calon developer php yang mulai belajar. Ya.. tutorial php di internet masih berjibun tentang penggunaan fungsi mysql untuk menangani fungsi konektivitas dan CRUD (Create, Read, Update Delete) di PHP.

Ditulisan ini akan dibahas berdasarkan penelusuran penulis mengapa sih atau alasan mulai ditinggalkannya fungsi mysql ini.

1.      Perubahan eksosistem php

Salah satu alasan yang paling simple adalah bahwa fungsi mysql dikembangkan awal sejak tahun 1998  sejak PHP 2.0 waduh mungkin lebih tua fungsi mysql daripada pembaca ya.. hehe    ?

……..nah dalam rentang tahun tersebut ekositem php masih bisa dibilang masih belum seperti sekarang perkembangannya yang sangat kompleks. Pemanfaatan atau database di php lebih cenderung diarahkan pada database yang bersifat gratis / freeware atau open source yang saat itu yang paling popular adalah mysql.

Alasan mulai tidak dikembangkannya fungsi mysql ini juga terkait dengan perubahan cara membangun aplikasi yang awalnya php masih bersifat procedural namun sekarang sudah sangat direkomendasikan ke dalam model berbasis objek atau yang keren disebut dengan OOP (Object Oriented Programming).

2.      Keragaman Produk Dan fitur database

Seiring perjalanan waktu jenis aplikasi RDBMS tidak hanya popular mysql saja. Sekarang ada firebase, mariaDB, prosgressSQL, SQLite dan lain sebagainya. Rupanya juga bukan hanya keragaman aplikasi database yang ada sekarang, namun juga fitur-fitur tambahan juga sekarang lebih banyak dibanding dengan fitur mysql beberapa tahun lalu. Sekarang ada fitur replikasi, mirroring, transaksi, cache statement, sharding dan lain sebagainya. Jadi sekarang pemanfaatan, manipulasi database bukan hanya sekedar CRUD aja lho…  ?

Selain fungsi mysql diupgrade dengan hadirnya mysqli, saat ini php juga sudah merelease wrapper mysqli tersebut dengan library yang disebut dengan PDO. Mengapa sih ada PDO lagi, PDO ini dimanfaatkan sebagai library konektivitas flexsibel yang dapat digunakan oleh banyak platform database. Kita kasih contoh misalnya departemen A menggunakan database berbasis SQL server dari Microsoft, sedangkan departemen B menggunakan MariaDB, dan departemen C menggunakan SQLite lalu jika hanya menggunakan fungsi mysqli tentu ada banyak kode yang berbeda yang harus ditulis (ingat ya walau masih menggunakan pendekatan bahasa SQL,  produk database tertentu memiliki standar Bahasa khusus / unik). Banyak kode ini agar satu aplikasi dapat mendukung tiap database yang berbeda tersebut. Aplikasi tersebut jadinya ya menjadi sangat komplek bukan karena komplektivitas fitur aplikasi tapi hanya berhubungan dengan konektivitas dan manipulasi database semata. Dan komplektivitas ini tidak hanya berhenti disini.

Bagaimana jika departemen A merubah produk yang berbeda lagi misalnya oracle. Pusing deh… hahaha…. Dengan memanfaatkan PDO maka programmer cukup memahami  pendekatan PDO dalam melakukan manipulasi database dan pendekatan tersebut sangat ampuh dimanfaatkan di banyak produk database berbeda.

3.      Pertimbangan keamanan

Fungsi Mysql sudah begitu tua sehingga ada banyak fitur yang tidak dimiliki atau disupport oleh fungsi mysql ini misalnya saja SSL, Charset dan lain sebagainya sehingga sangat direkomendasikan untuk tidak menggunakan fungsi ini di next projectnya rekan-rekan. Fungsi ini juga sangat rentan dengan SQL Injection salah satu jenis kerentanan sistem yang akan mudah ditembus oleh para cracker. Oh ya jangan anggap PDO atau MYSQLI bebas ya dari SQL Injection, hanya saja lebih mudah di set up atau ditangani kelemahan SQL Injection dengan menggunakan PDO.

Berikut fitur yang membedakan antara mysql, mysqli dan PDO

By the way fungsi mysql ini telah berkontribusi besar bagi banyak developer di masa lalu dan saat ini (khususnya developer senior yang ga mau move on atau junior yang salah arah hehe) dan sudah saatnya kita tinggalkan ya. Fungsi mysql dianggap deprecated pada versi php 5.5 (dirilis juni 2013) dan  akan dibuang sepenuhnya di versi php  7 (desember 2015).

 

Berikut alasan lain mengapa tidak menggunakan mysql_* fungsi ini :

  1. Tidak dalam pengembangan lagi
  2. Dihapuskan pada php 7
  3. Tidak mendukung OOP
  4. Tidak mendukung non-blocking dan asyncrhronous queries
  5. Tidak mendukung prepared statement atau parameterize queries
  6. Tidak mendukung stored procedure
  7. Tidak mendukung multiple statements
  8. Transaksi tidak didukung
  9. Lupakan fungsi yang didukung oleh versi MYSQL 5.1

 

Tips bagi kawan-kawan developer yang masih ingin atau terlanjur telah menggunakan mysql ini dapat menghilangkan deprecated notice ini dengan menambahkan script berikut di script phpnya.

 error_reporting(E_ALL ^ E_DEPRECATED);

 

atau mengubah parameter di php.ini pada baris berikut :

 error_reporting = E_ALL ^ E_DEPRECATED

 

Share ya gan pengetahuan ini dan jangan lupa komentar agan.  ?

 

Sumber Bacaan :

https://wiki.php.net/rfc/mysql_deprecation
http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php

Leave a Comment

Your email address will not be published. Required fields are marked *