Apa perbedaan antara MySQL, MySQLi dan PDO? [Tutup]

Jawaban:

100

Ada (lebih dari) tiga cara populer untuk menggunakan MySQL dari PHP. Ini menguraikan beberapa fitur / perbedaan PHP: Memilih API :

  1. ( TERGANGGU ) Fungsi mysql bersifat prosedural dan menggunakan pelolosan manual.
  2. MySQLi adalah pengganti untuk fungsi mysql, dengan versi berorientasi objek dan prosedural. Ini memiliki dukungan untuk pernyataan yang disiapkan.
  3. PDO (PHP Data Objects) adalah lapisan abstraksi basis data umum dengan dukungan untuk MySQL di antara banyak basis data lainnya. Ini memberikan pernyataan yang disiapkan, dan fleksibilitas yang signifikan dalam bagaimana data dikembalikan.

Saya akan merekomendasikan menggunakan PDO dengan pernyataan yang disiapkan. Ini adalah API yang dirancang dengan baik dan akan memungkinkan Anda lebih mudah pindah ke database lain (termasuk yang mendukung ODBC ) jika perlu.

Matthew Flaschen
sumber
9
Sering ada kebingungan bahwa untuk prosedural Anda harus menggunakan fungsi mysql _ * () di mana untuk OO Anda menggunakan mysqli! Faktanya adalah bahwa mysqli sepenuhnya menggantikan implementasi awal (PHP 4) dari mysql. Dimungkinkan untuk menggunakan gaya prosedural dan OO dengan mysqli.
Patrick Allaert
@ Patrick, terima kasih. Saya sudah memperbaiki ini.
Matthew Flaschen
46

Itu adalah API yang berbeda untuk mengakses backend MySQL

  • The mysql adalah API sejarah
  • The mysqli adalah versi baru dari API sejarah. Ini harus berkinerja lebih baik dan memiliki seperangkat fungsi yang lebih baik. Juga, API berorientasi objek.
  • PDO_MySQL , adalah MySQL untuk PDO. PDO telah diperkenalkan dalam PHP, dan proyek ini bertujuan untuk membuat API umum untuk semua akses basis data, jadi secara teori Anda harus dapat bermigrasi di antara RDMS tanpa mengubah kode apa pun (jika Anda tidak menggunakan fungsi RDBM spesifik dalam permintaan Anda ), juga berorientasi objek.

Jadi itu tergantung pada jenis kode apa yang ingin Anda hasilkan. Jika Anda lebih suka lapisan berorientasi objek atau fungsi polos ...

Saran saya adalah

  1. PDO
  2. MySQLi
  3. mysql

Juga perasaan saya, API mysql mungkin akan dihapus di rilis mendatang PHP.

RageZ
sumber
3
Tidak ada lagi perasaan: PHP7 menghapus API mysql, meninggalkan PDO dan mysqli
Manuel
3

mysqli adalah versi yang disempurnakan dari mysql.

Ekstensi PDO mendefinisikan antarmuka yang ringan dan konsisten untuk mengakses database dalam PHP. Setiap driver basis data yang mengimplementasikan antarmuka PDO dapat mengekspos fitur spesifik basis data sebagai fungsi ekstensi reguler.

Sarfraz
sumber
4
menyalin dari file manual tidak terlalu berguna.
XuDing
3

Secara khusus, ekstensi MySQLi memberikan manfaat yang sangat berguna berikut dibandingkan ekstensi MySQL lama ..

Antarmuka OOP (selain prosedural) Pernyataan Transaksi Disiapkan Dukungan + Prosedur Tersimpan Dukungan Peningkatan Kecepatan Sintaks Lebih Baik Peningkatan Debugging

Perpanjangan PDO

Ekstensi Objek Data PHP adalah Lapisan Abstraksi Basis Data. Secara khusus, ini bukan antarmuka MySQL, karena menyediakan driver untuk banyak mesin basis data (tentu saja termasuk MYSQL).

PDO bertujuan untuk menyediakan API yang konsisten yang berarti ketika mesin basis data diubah, perubahan kode untuk mencerminkan ini harus minimal. Saat menggunakan PDO, kode Anda biasanya "hanya berfungsi" di banyak mesin basis data, hanya dengan mengubah driver yang Anda gunakan.

Selain kompatibel lintas-basis data, PDO juga mendukung pernyataan yang disiapkan, prosedur tersimpan, dan lainnya, saat menggunakan Driver MySQL.


sumber