Saya akan merekomendasikan menggunakan PDO dengan pernyataan yang sudah disiapkan. Ini adalah API yang dirancang dengan baik dan akan membuat Anda lebih mudah berpindah ke database lain (termasuk yang mendukung ODBC) jika perlu Show ———————————————————— Itu adalah perbedaan API untuk mengakses backend MySQL
Jadi itu tergantung jenis kode apa yang ingin Anda hasilkan, jika Anda lebih suka lapisan berorientasi objek atau fungsi biasa… Saat mengakses database di PHP, kita memiliki dua pilihan. MySQLi dan PDO. Jadi apa yang harus Anda ketahui sebelum memilih salah satunya? Jika Anda sering bekerja dengan database di PHP, Anda mungkin ingin melihat berbagai skrip dan aplikasi berguna untuk MySQLi dan PDO di Envato Market Aplikasi PDO di Envato MarketRingkasanDukungan PDOMySQLiDatabase12 driver berbedaMySQL onlyAPIOOPOOP + proseduralConnectionEasyEasyNamed parameterYesNoObject mappingYesYesPernyataan yang disiapkan(sisi klien)YaTidakKinerjaCepatCepatSimpan prosedurYaYa KoneksiSangat mudah untuk terhubung ke database dengan keduanya 1 // PDO
2 $pdo = new PDO("mysql:host=localhost;dbname=database", 'username', 'password'); 3 4 // mysqli, procedural way
5 $mysqli = mysqli_connect('localhost','username','password','database'); 6 // PDO
0// PDO
1// PDO
2// PDO
3Harap diperhatikan bahwa objek/sumber daya koneksi ini akan dianggap ada selama sisa tutorial ini Dukungan APIBaik PDO dan MySQLi menawarkan API berorientasi objek, tetapi MySQLi juga menawarkan API prosedural - yang memudahkan pendatang baru untuk memahaminya. Jika Anda terbiasa dengan driver PHP MySQL asli, Anda akan menemukan bahwa migrasi ke antarmuka MySQLi prosedural jauh lebih mudah. Di sisi lain, setelah Anda menguasai PDO, Anda dapat menggunakannya dengan database apa pun yang Anda inginkan Dukungan Basis DataKeunggulan utama PDO dibandingkan MySQLi adalah dukungan driver basis datanya. Pada saat penulisan ini, PDO mendukung 12 driver berbeda, berlawanan dengan MySQLi, yang hanya mendukung MySQL Untuk mencetak daftar semua driver yang didukung PDO saat ini, gunakan kode berikut 1 // PDO
5Apa artinya ini? . Jadi yang harus Anda lakukan hanyalah mengubah string koneksi dan beberapa kueri - jika mereka menggunakan metode apa pun yang tidak didukung oleh database baru Anda. Dengan MySQLi, Anda perlu menulis ulang setiap potongan kode - termasuk kueri Parameter BernamaIni adalah fitur penting lain yang dimiliki PDO; 1 // PDO
72 // PDO
93 21_______5_______ 23 5 25 6________2______7 // PDO
029 // PDO
2// PDO
9____2______3____3bertentangan dengan cara MySQLi 1 $pdo = new PDO("mysql:host=localhost;dbname=database", 'username', 'password');5 2 23 3 $pdo = new PDO("mysql:host=localhost;dbname=database", 'username', 'password');9 4 31 5 33 6 // PDO
9// PDO
037 // PDO
2________4______9Pengikatan parameter tanda tanya mungkin tampak lebih pendek, tetapi tidak sefleksibel parameter bernama, karena fakta bahwa pengembang harus selalu melacak urutan parameter; Sayangnya, MySQLi tidak mendukung parameter bernama Pemetaan ObjekBaik PDO dan MySQLi dapat memetakan hasil ke objek. Ini sangat berguna jika Anda tidak ingin menggunakan lapisan abstraksi basis data khusus, tetapi masih menginginkan perilaku seperti ORM. Bayangkan kita memiliki kelas // PDO
_44 dengan beberapa properti, yang cocok dengan nama bidang dari database1 41___________________ 43 3 45 4 47____7______________________________________________________________________ Tanpa pemetaan objek, kita perlu mengisi setiap nilai bidang (baik secara manual atau melalui konstruktor) sebelum kita dapat menggunakan metode // PDO
45 dengan benarHal ini memungkinkan kita untuk menentukan properti ini bahkan sebelum objek dibuat. Contohnya 1 51 2 // PDO
93 // PDO
4 57 5 59 6 // PDO
0$mysqli = mysqli_connect('localhost','username','password','database');2 // PDO
2$mysqli = mysqli_connect('localhost','username','password','database');4 $pdo = new PDO("mysql:host=localhost;dbname=database", 'username', 'password');2 // mysqli, procedural way
9// mysqli, procedural way
8$mysqli = mysqli_connect('localhost','username','password','database');8 $mysqli = mysqli_connect('localhost','username','password','database');9 60 61 62 63 64 65 // mysqli, procedural way
767 // mysqli, procedural way
969 // PDO
00// PDO
01// PDO
02// PDO
03// PDO
04// PDO
0564 // PDO
07// mysqli, procedural way
7// PDO
09// mysqli, procedural way
9Keamanan
Katakanlah seorang peretas sedang mencoba menyuntikkan beberapa SQL berbahaya melalui parameter kueri HTTP 'nama pengguna' (GET) 1 // PDO
12Jika kami gagal menghindarinya, ini akan disertakan dalam kueri "sebagaimana adanya" - menghapus semua baris dari tabel // PDO
46 (PDO dan mysqli mendukung banyak kueri)1 // PDO
142 // PDO
163 4 // PDO
195 // PDO
216 // PDO
23// PDO
0// PDO
25// PDO
2________3______2// PDO
28Seperti yang Anda lihat, // PDO
47 tidak hanya lolos dari string, tetapi juga mengutipnya. Di sisi lain, // PDO
_48 hanya akan lolos dari string; 1 // PDO
302 // PDO
323 // PDO
344 5 // PDO
376 // PDO
39// PDO
0// PDO
41// PDO
239
PertunjukanMeskipun PDO dan MySQLi cukup cepat, kinerja MySQLi jauh lebih cepat di benchmark - ~2. 5% untuk pernyataan yang tidak disiapkan, dan ~6. 5% untuk yang sudah jadi. Namun, ekstensi MySQL asli bahkan lebih cepat dari keduanya. Jadi, jika Anda benar-benar perlu memeras setiap kinerja terakhir, itu adalah satu hal yang dapat Anda pertimbangkan RingkasanPada akhirnya, PDO memenangkan pertempuran ini dengan mudah. Dengan dukungan untuk dua belas driver basis data yang berbeda (delapan belas basis data berbeda. ) dan parameter bernama, kita dapat mengabaikan kehilangan kinerja yang kecil, dan membiasakan diri dengan API-nya. Dari sudut pandang keamanan, keduanya aman selama pengembang menggunakannya sebagaimana mestinya (baca. pernyataan yang telah disiapkan) Bisakah saya menggunakan PDO dan MySQLi?Ya, itu mungkin . Data yang dimasukkan ke dalam basis data tidak peduli bagaimana data itu sampai di sana, atau bagaimana Anda mengeluarkannya kembali.
Apa perbedaan antara MySQL dan MySQLi?Pada dasarnya, MySQL adalah driver basis data lama, dan MySQLi adalah driver yang Ditingkatkan . The "i" adalah singkatan dari "improved" sehingga MySQL ditingkatkan. MySQLi dapat dilakukan secara prosedural dan berorientasi objek sedangkan MySQL hanya dapat digunakan secara prosedural. Mysqli juga mendukung pernyataan siap yang melindungi dari SQL Injection.
Apa keunggulan PDO dibandingkan MySQL?PDO lebih aman daripada dua opsi pertama dan juga lebih cepat dibandingkan dengan prosedural MySQLi dan berorientasi objek MySQLi.
Mana yang lebih cepat MySQLi atau PDO?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. |