Seperti yang kita ketahui bersama, MySQL adalah Open Source Relational Database Management System (RDBMS) yang menggunakan Structured Query Language (SQL). MySQL adalah komponen utama dari tumpukan perangkat lunak aplikasi Web Sumber Terbuka LAMP (dan tumpukan "AMP" lainnya). Apache MySQL dan PHP Show
MySQL adalah bagian penting dari hampir setiap aplikasi Open Source PHP. Contoh bagus untuk skrip berbasis PHP dan MySQL adalah phpBB, osCommerce, dan Joomla PHP dulu datang dengan ekstensi MySQL asli built-in yang mendukung dengan versi MySQL yang lebih lama. Namun ekstensi ini sudah tidak digunakan lagi karena MySQLi (i untuk ditingkatkan). Pada saat yang sama PHP terus berkembang dan ekstensi PDO (PHP Data Objects) diperkenalkan menjadi antarmuka umum untuk mengakses berbagai jenis database. MySQLi adalah salah satu dari tiga cara untuk mengakses server database MySQL. Seperti ekstensi MySQL, MySQLi baru dirancang untuk lebih memanfaatkan fitur server MySQL yang lebih baru Ekstensi PHP Data Objects (PDO) mendefinisikan antarmuka umum yang ringan untuk mengakses database di PHP. Setiap driver basis data yang didukung oleh antarmuka PDO dapat menampilkan fitur khusus basis data, serta fungsi-fungsi umum PDO menyediakan lapisan abstraksi akses data, yang berarti bahwa, apa pun jenis database yang Anda gunakan, fungsi yang sama tersedia untuk melakukan kueri dan mengambil hasil. PDO tidak menyediakan abstraksi basis data lengkap. saya. e. itu tidak menulis ulang kueri SQL atau meniru fitur yang hilang. Anda harus menggunakan paket lapisan abstraksi lengkap jika Anda membutuhkan kemampuan itu 2. Perbedaan Menghubungkan Menggunakan MySQLi dan PDOBaik PDO dan MySQLi menawarkan antarmuka Berorientasi Objek ke fungsi ekstensi tetapi MySQLi juga menawarkan API prosedural, yang memudahkan pendatang baru untuk memahaminya. Jika Anda terbiasa dengan ekstensi PHP MySQL asli, Anda akan menemukan migrasi ke antarmuka MySQLi prosedural lebih mudah. Di bawah ini adalah contohnya
Masuk ke mode layar penuh Keluar dari mode layar penuh Keuntungan utama PDO dibandingkan MySQLi adalah dukungan database. PDO mendukung 12 jenis database berbeda, berlawanan dengan MySQLi, yang hanya mendukung MySQL Saat Anda harus mengalihkan proyek Anda untuk menggunakan database lain, PDO membuat prosesnya lebih sederhana. Jadi yang harus Anda lakukan hanyalah mengubah string koneksi dan paling banyak beberapa kueri jika mereka menggunakan sintaks apa pun yang tidak didukung oleh database baru Anda 3. Keamanan PDO vs MysQLi menggunakan Pernyataan yang DisiapkanBaik PDO dan MySQLi memberikan dukungan untuk kueri yang disiapkan. Ini membantu mencegah masalah keamanan injeksi SQL, selama Anda hanya menggunakan kueri yang disiapkan untuk memasukkan parameter dinamis dalam kueri Misalnya, pertimbangkan seorang peretas yang mencoba menyuntikkan SQL berbahaya dengan meneruskan nilai yang dipalsukan ke kode parameter permintaan HTTP POST yang dapat ditiru seperti ini _Masuk ke mode layar penuh Keluar dari mode layar penuh Jika Anda tidak lolos dari nilai ini, nilai ini akan dimasukkan ke dalam kueri apa adanya, sehingga akan menghapus semua baris dari tabel produk Salah satu cara untuk membuat kueri lebih aman menghindari injeksi SQL adalah mengutip nilai parameter string untuk menyisipkan karakter escape
Masuk ke mode layar penuh Keluar dari mode layar penuh PDO. quote() tidak hanya lolos dari string, tetapi juga menambahkan tanda kutip. mysqli_real_escape_string() hanya akan keluar dari string, jadi Anda perlu menambahkan tanda kutip secara manual
Masuk ke mode layar penuh Keluar dari mode layar penuh PDO juga mendukung permintaan sisi klien. Ini berarti bahwa ketika menyiapkan kueri, ia tidak harus berkomunikasi dengan server Karena MySQLi menggunakan pernyataan yang disiapkan asli, sebenarnya akan lebih cepat menggunakan mysqli_real_escape_string daripada menggunakan pernyataan yang disiapkan, sementara itu masih merupakan solusi yang aman 4. PDO vs MySQLi vs Tolok Ukur Kinerja MySQLAda beberapa tes benchmark kinerja PHP MySQL beberapa tahun lalu oleh Jonathan Robson juga oleh Radu Potop. Padahal tes ini dilakukan dengan PHP 5. 3 dan saat ini kami menggunakan PHP 7 atau lebih baru, mari pertimbangkan hasil ini sebagai referensi Pada dasarnya mereka menunjukkan bahwa untuk kueri SELECT menggunakan pernyataan yang disiapkan, MySQLi berjalan sedikit lebih cepat. Tetap saja itu mungkin tidak signifikan tergantung pada tujuan Anda Perlu diingat bahwa PDO secara default menggunakan emulasi pernyataan yang disiapkan sisi klien. Saat menggunakan pernyataan yang disiapkan asli, ada perjalanan bolak-balik tambahan ke server untuk menyiapkan pernyataan, sehingga keseluruhan waktu eksekusi kueri mungkin sebenarnya lebih besar daripada saat menggunakan pernyataan yang disiapkan asli untuk menjalankan kueri hanya sekali Seperti disebutkan di atas, Anda dapat menggunakan fungsi mysqli_real_escape_string untuk mengutip parameter dinamis seperti yang akan Anda lakukan saat menggunakan ekstensi MySQL asli. Ini seperti meniru kueri yang sudah disiapkan seperti yang dilakukan dengan PDO karena Anda tidak perlu melakukan perjalanan bolak-balik tambahan ke server untuk menyiapkan pernyataan 5. Perbandingan antara Ketentuan Penggunaan PDO dan MySQLiSementara MySQLi memiliki kelebihan dalam mengakses fitur server MySQL, PDO terkadang memiliki keunggulan dan mungkin lebih cocok untuk pengguna, tergantung pada preferensi dan kenyamanan pribadi. Seperti kebanyakan hal, opsi yang berfungsi paling baik bergantung pada siapa Anda bertanya dan untuk situasi apa Anda memerlukan MySQLi atau PDO MySQLi hanya bekerja dengan database MySQL, sedangkan PDO fleksibel dan dapat bekerja dengan banyak sistem database, termasuk IBM, Oracle, dan MySQL. Jika Anda harus mengganti basis data atau menyediakan solusi independen basis data, menggunakan MySQLi secara langsung bukanlah pilihan terbaik. Anda masih dapat menggunakan MySQLi dalam solusi independen basis data menggunakan lapisan abstraksi Mengikat parameter dengan MySQLi tidak semudah atau sefleksibel dengan PDO. MySQLi menggunakan sistem parameter bernomor dan tidak mendukung parameter bernama seperti PDO. MySQLi memiliki dukungan dan pemeliharaan yang baik, membuat transisi ke dan menggunakan sistem baru dengan aman dan terjamin Anda akan dapat memanfaatkan fitur-fitur baru yang tersedia di versi server MySQL yang lebih baru. Ini adalah salah satu keuntungan terbesar dari MySQLi. PDO mungkin tidak memiliki dukungan ekstensif untuk memanfaatkan sepenuhnya kemampuan MySQL yang lebih baru Proses instalasi dengan MySQLi tidak hanya mudah, tetapi otomatis ketika ekstensi PHP 5 MySQL yang disertakan dengan distribusi Windows atau Linux bawaan 6. Konversi Aplikasi MySQL untuk Menggunakan PDO atau MySQLiJika Anda memiliki proyek yang menggunakan ekstensi MySQL lama dan Anda perlu mengonversinya untuk menggunakan MySQLi atau PDO, mungkin perlu beberapa saat untuk menulis ulang jika Anda tidak menggunakan lapisan abstraksi basis data Jika Anda memerlukan solusi cepat dan mudah yang tidak perlu mengubah banyak kode, Anda dapat mencoba paket PDO atau MySQLi untuk menggunakan masing-masing ekstensi ini dengan menggunakan fungsi pembungkus MySQL yang memanggil fungsi mysql_* menggunakan PDO oleh Aziz . Hussain atau PHP MySQL ke MySQLi oleh Dave Smith untuk masing-masing fungsi ekstensi PDO dan MySQLi Ini akan memungkinkan Anda untuk membuat kode Anda berjalan di PHP 7 saat Anda melakukan migrasi nyata dari kode yang tidak memerlukan pembungkus Dave Smith juga telah menulis tutorial tentang cara memigrasikan kode mysql ke mysqli dengan mempertimbangkan perbedaan antara ekstensi tersebut Apakah PDO bagian dari PHP?Apa itu PDO? . Fitur khusus basis data dapat diekspos sebagai fungsi ekstensi standar oleh driver basis data apa pun yang mengimplementasikan antarmuka PDO. PDO in PHP (PHP Data Objects) is a lightweight, consistent framework for accessing databases in PHP. Database-specific features may be exposed as standard extension functions by any database driver that implements the PDO interface.
Apa perbedaan antara PDO dan MySQLi di PHP?Seperti yang dinyatakan sebelumnya, PDO dan MySQLi sangat mirip, tetapi ada sedikit perbedaan dalam sintaks. MySQLi mengikuti konvensi snake_case PHP jadul, sementara PDO menggunakan camelCase . Selain itu, metode MySQLi digunakan sebagai properti objek, sedangkan PDO menggunakan sintaks tradisional untuk fungsi.
Bagaimana PHP terhubung menggunakan PDO?PDO mewakili koneksi antara PHP dan server database . PDOStatement mewakili pernyataan yang disiapkan dan, setelah pernyataan dijalankan, hasil terkait ditetapkan. PDOException mewakili kesalahan yang diangkat oleh PDO.
Apa keunggulan PDO dibandingkan MySQL?Procedural MySQLi dan berorientasi objek MySQLi hanya mendukung database MySQL tetapi PDO adalah metode lanjutan bersama dengan MySQL yang mendukung Postgres, SQLite, Oracle, dan MS SQL Server. PDO lebih aman daripada dua opsi pertama dan juga lebih cepat dibandingkan dengan prosedural MySQLi dan berorientasi objek MySQLi. |