Ekstensi mysql
Fungsimysql_*
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.internalsDan tim pengembang PHP telah memutuskan untuk menghasilkan kesalahan
E_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 ?
Meninggalkanext/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 statementEkstensi
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.