PHP menawarkan tiga API (Application Programming Interface) untuk berhubungan dengan MySQL. Yaitu dengan menggunakan ekstensi mysql, mysqli (MySQL Improved), PDO (PHP Database Object). Kali ini kita akan membahas ekstensi mysql yang ada pada PHP, mengapa ekstensi ini tidak lagi didukung oleh PHP versi berikutnya?

Kenapa Jangan lagi menggunakan mysql_* pada PHP ?

PHP menawarkan tiga API (Application Programming Interface) untuk berhubungan dengan MySQL. Yaitu dengan menggunakan ekstensi mysql, mysqli (MySQL Improved), PDO (PHP Database Object). Kali ini kita akan membahas ekstensi mysql yang ada pada PHP, mengapa ekstensi ini tidak lagi didukung oleh PHP verssi berikutnya?

Ekstensi mysql

Fungsi mysql_* merupakan yang paling populer dikalangan web programmer, tapi sayangnya kini tidak lagi dianjurkan. Tim dokumentasi memberikan informasi bahwa hal ini berhubungan dengan keamaanan database anda. Dan mulai mendidik dengan perlahan menjauhi ekstensi ext/mysql seperti yang dijelaskan pada php.internals

Dan tim pengembang PHP telah memutuskan untuk menghasilkan kesalahanE_DEPRECATED ketika pengguna terhubung ke MySQL. Baik melalui mysql_connect(),mysql_pconnect() atau fungsi koneksi implisit lainnya yang ada pada ext/mysql. Kini PHP 5.5 secara resmi meninggalkan ext/mysql, ketika anda berkunjung ke halaman resmi PHP dan masuk pada fungsi mysql_* anda akan menemukan kotak merah, menjelaskan hal itu tidak boleh digunakan lagi.

 

Mengapa ?

Meninggalkan ext/mysql tidak hanya tentang keamanan, tetapi juga tentang akses terhadap semua fitur dari database MySQL. ext/mysql dibangun untuk MySQL 3.23 dan sejak saat itu hanya ada sedikit tambahan, sementara itu penambahan untuk menjaga dari versi lama membuat semakin dipertahankan. Beberapa fungsi yang tidak didukung oleh ext/mysql adalah: (diambil dari PHP Manual)

  • Store Procedures (Tidak bisa menangani beberapa hasil set)
  • Prepared Statements
  • Encryption (SSL)
  • Compresion
  • Full Charset Support

 

Alasan untuk tidak lagi menggunakan ekstensimysql_* adalah ?

  • Tidak lagi dibawah pengembangan aktif
  • Dalam proses depresiasi (akan dihapus dari versi PHP berikutnya)
  • Tidak memiliki antar muka OO (Object Oriented)
  • Tidak mendukung non-blocking, asynchronous queries
  • Tidak mendukung Prepared Statements
  • Tidak mendukung Store Procedures
  • Tidak mendukung multiple statement
  • Tidak mendukung transactions
  • Tidak mendukung semua fungsi yang ada pada MySQL 5.1

 

Menyembunyikan pesan kesalahan

Sementara anda sedang mengkonversi semua kode ke MySQLi atau PDO, kesalahanE_DEPRECATED dapat sembunyikan, dengan emngubah nilai error_reporting pada php.ini untuk menyimpan kesalahan E_DEPRECATED:

error_reporting = E_ALL ^ E_DEPRECATED

catatan: dengan menambahkan nilai E_DEPRECATED tidak hanya menyembunyikan kesalahan yang timbul akibat ext/mysql tapi juga menyembunyikan kesalahan dari ekstensi lain.

 

Kesimpulan

Sebaiknya anda mulai berlajar mengenai prepare statement

Ekstensi mysql_* tidak mendukung prepare statement yang sangat berguna untuk menanggulaing Injeksi MySQL. ini memperbaiki kerentanan dalam alpikasi yang bisa menjadi hal serius tergantung Injeksi MySQL yang dikirimkan oleh penyerang data anda.

Lihat Kotak Merah?

Ketika anda berkunjung ke website PHP manual pastikan anda memperhatikan kotak merah yang ada pada fungsi tersebut.

Mulailah menggunakan PDO atau MySQLi

Ada PDO yang lebih baik, lebih kuat dan menawarkan pendekatan OOP lengkap untuk interaksi dengan database, dan MySQLi, yang merupakan perbaikan khusus MySQL

Lalu, Bagaimana aplikasi yang telah saya buat?

Anda bisa saja membiarkan sistem yang telah berjalan dengan tetap menggunakan ext/mysql. tapi Anda sudah diingatkan, mengapa ekstensi ini dihilangkan, yaitu berhubungan dengan keamanan data Anda sendiri.

 

Sumber :


About Author

root

"To be more advanced does not need to be complicated" because simple it's more easier and better.


Comment & Discussions

    Please LOGIN before if you want to give the comment.