Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Ekstensi mysql tidak digunakan lagi dan akan dihapus di masa mendatang:gunakan mysqli atau PDO sebagai gantinya

  1. Mengapa ini terjadi?

    Seluruh ext/mysql Ekstensi PHP, yang menyediakan semua fungsi yang diberi nama dengan awalan mysql_ , secara resmi tidak digunakan lagi di PHP v5.5.0 dan dihapus di PHP v7 .

    Ini awalnya diperkenalkan di PHP v2.0 (November 1997) untuk MySQL v3.20, dan tidak ada fitur baru yang ditambahkan sejak tahun 2006. Ditambah dengan kurangnya fitur baru adalah kesulitan dalam mempertahankan kode lama di tengah kerentanan keamanan yang kompleks.

    Manual telah berisi peringatan terhadap penggunaannya dalam kode baru sejak Juni 2011.

  2. Bagaimana cara memperbaikinya?

    Seperti yang disarankan oleh pesan kesalahan, ada dua ekstensi MySQL lain yang dapat Anda pertimbangkan:MySQLi dan PDO_MySQL , salah satunya dapat digunakan sebagai pengganti ext/mysql . Keduanya telah berada di inti PHP sejak v5.0, jadi jika Anda menggunakan versi yang menimbulkan kesalahan penghentian ini, maka Anda hampir pasti dapat langsung mulai menggunakannya—yaitu. tanpa upaya instalasi apa pun.

    Mereka sedikit berbeda, tetapi menawarkan sejumlah keunggulan dibandingkan ekstensi lama termasuk dukungan API untuk transaksi, prosedur tersimpan, dan pernyataan yang disiapkan (sehingga memberikan cara terbaik untuk mengalahkan serangan injeksi SQL ). Pengembang PHP Ulf Wendel telah menulis perbandingan menyeluruh dari fitur .

    Hashphp.org memiliki tutorial yang sangat baik tentang migrasi dari ext/mysql ke PDO .

  3. Saya memahami bahwa mungkin untuk menekan kesalahan penghentian dengan menyetel error_reporting di php.ini untuk mengecualikan E_DEPRECATED :

    error_reporting = E_ALL ^ E_DEPRECATED
    

    Apa yang akan terjadi jika saya melakukan itu?

    Ya, dimungkinkan untuk menekan pesan kesalahan tersebut dan terus menggunakan ext/mysql yang lama perpanjangan untuk saat ini. Tapi Anda seharusnya tidak melakukan ini —ini adalah peringatan terakhir dari pengembang bahwa ekstensi tersebut tidak boleh digabungkan dengan versi PHP yang akan datang (memang, seperti yang telah disebutkan, ekstensi tersebut telah dihapus dari PHP v7). Sebagai gantinya, Anda harus mengambil kesempatan ini untuk memigrasikan aplikasi Anda sekarang , sebelum terlambat.

    Perhatikan juga bahwa teknik ini akan menekan semua E_DEPRECATED pesan, bukan hanya yang berkaitan dengan ext/mysql extension:oleh karena itu Anda mungkin tidak mengetahui perubahan lain yang akan datang pada PHP yang akan memengaruhi kode aplikasi Anda. Tentu saja, hanya mungkin untuk menekan kesalahan yang muncul pada ekspresi yang dipermasalahkan dengan menggunakan operator kontrol kesalahan -yaitu. awali baris yang relevan dengan @ —namun ini akan menekan semua kesalahan yang ditimbulkan oleh ekspresi itu, bukan hanya E_DEPRECATED yang.

Apa yang harus Anda lakukan?

  • Anda memulai proyek baru.

    sama sekali tidak ada alasan untuk menggunakan ext/mysql —pilih salah satu ekstensi lain yang lebih modern dan dapatkan manfaat dari manfaat yang ditawarkan.

  • Anda memiliki basis kode lama (milik Anda sendiri) yang saat ini bergantung pada ext/mysql .

    Sebaiknya lakukan pengujian regresi:Anda benar-benar tidak boleh mengubah apa pun (terutama meningkatkan versi PHP) hingga Anda mengidentifikasi semua area dampak potensial, yang direncanakan di sekitar masing-masing area tersebut, dan kemudian menguji solusi Anda secara menyeluruh dalam lingkungan pementasan.

    • Mengikuti praktik pengkodean yang baik, aplikasi Anda dikembangkan secara longgar terintegrasi/modular dan metode akses database semuanya mandiri di satu tempat yang dapat dengan mudah ditukar dengan salah satu ekstensi baru.

      Luangkan waktu setengah jam untuk menulis ulang modul ini untuk menggunakan salah satu ekstensi lain yang lebih modern; tes secara menyeluruh. Nanti Anda dapat memperkenalkan penyempurnaan lebih lanjut untuk mendapatkan manfaat dari manfaat yang mereka tawarkan.

    • Metode akses database tersebar di semua tempat dan tidak dapat dengan mudah ditukar dengan salah satu ekstensi baru.

      Pertimbangkan apakah Anda benar-benar perlu meningkatkan ke PHP v5.5 saat ini.

      Anda harus mulai merencanakan untuk mengganti ext/mysql dengan salah satu ekstensi lain yang lebih modern agar Anda dapat menuai manfaat dari manfaat yang mereka tawarkan; Anda juga dapat menggunakannya sebagai peluang untuk memfaktorkan ulang metode akses database Anda ke dalam struktur yang lebih modular.

      Namun, jika Anda memiliki mendesak perlu segera memutakhirkan PHP, Anda dapat mempertimbangkan untuk menekan kesalahan penghentian untuk saat ini:tetapi pertama-tama pastikan untuk mengidentifikasi kesalahan penghentian lainnya yang juga terjadi.

  • Anda menggunakan proyek pihak ketiga yang bergantung pada ext/mysql .

    Pertimbangkan apakah Anda benar-benar perlu meningkatkan ke PHP v5.5 saat ini.

    Periksa apakah pengembang telah merilis perbaikan, solusi, atau panduan apa pun terkait dengan masalah khusus ini; atau, jika tidak, tekan mereka untuk melakukannya dengan membawa masalah ini ke perhatian mereka. Jika Anda memiliki mendesak perlu segera memutakhirkan PHP, Anda dapat mempertimbangkan untuk menekan kesalahan penghentian untuk saat ini:tetapi pertama-tama pastikan untuk mengidentifikasi kesalahan penghentian lainnya yang juga terjadi.

    Sangat penting untuk melakukan pengujian regresi.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa perbedaan antara INSERT dan UPDATE di MySQL?

  2. MySQL 8.0 - Klien tidak mendukung protokol otentikasi yang diminta oleh server; pertimbangkan untuk memutakhirkan klien MySQL

  3. Cara Menggunakan Pernyataan KASUS di MySQL

  4. Bagaimana Operator LIKE Bekerja di MySQL

  5. Bagaimana cara menulis pernyataan IF ELSE dalam kueri MySQL?