Lama berlalu adalah hari-hari menggunakan ekstensi 5, karena metodenya telah dan. Sayangnya, internet masih diganggu dengan banyak sekali tutorial lama yang hanya akan disalin/ditempel oleh pemula dan digunakan pada platform hosting bersama dengan versi PHP yang lebih lama, sehingga melanjutkan warisannya Show
Jika Anda menggunakan MySQL atau MariaDB di PHP, Anda memiliki kemampuan untuk memilih MySQLi atau PDO. Yang pertama hanyalah versi yang ditingkatkan dengan dukungan prosedural dan OOP dan menambahkan pernyataan yang disiapkan, sedangkan yang terakhir adalah lapisan abstraksi yang memungkinkan Anda menggunakan API terpadu untuk semua yang didukungnya. Meskipun harus disebutkan bahwa MySQL tidak diragukan lagi adalah database paling populer untuk digunakan di dunia PHP Secara teori, orang mungkin menganggap diskusi harus berakhir. Kami tidak memerlukan API khusus vendor untuk setiap jenis database yang ada, karena jauh lebih mudah menggunakan satu saja. Meskipun pasti ada banyak kebenaran mengenai hal ini, masalahnya adalah bahwa 6 tidak memiliki semua fitur terbaru dan tercanggih yang dimiliki MySQLi. Sejujurnya saya tidak mengerti mengapa ini terjadi, karena ini akan sepenuhnya menghilangkan alasan untuk menggunakan API khusus vendor. Yang mengatakan, saya membayangkan bahwa kebanyakan orang tidak memerlukan fitur tambahan ini, tetapi pasti ada beberapa yang melakukannyaBagi siapa saja yang tertarik, inilah artikel lengkap tentang PDO dan MySQLi Keuntungan PDOMySQLi memiliki beberapa aspek untuk mengejar ketinggalan dengan PDO. Perlu menambahkan fitur seperti
Seperti yang Anda lihat, ada beberapa hal yang harus dipelajari MySQLi dari PDO jika ingin tetap relevan Jika ya, maka seharusnya tidak ada perbedaan sama sekali. Orang-orang selalu berbicara tentang bagaimana Anda harus mempelajari ekstensi yang benar-benar baru, namun sebagian besar sebenarnya sudah hampir identik. Untuk artikel ini, saya akan menggunakan pernyataan asli yang disiapkan, tetapi yang ditiru juga dapat diterima. Berikut ini adalah Langganan singkat di antara keduanya Keunggulan MySQLiPDO juga kehilangan beberapa fitur, meskipun tidak terlalu penting bagi sebagian besar pengguna, seperti
Jadi Mana Yang Harus Saya Gunakan?Pendapat saya adalah bahwa PDO harus digunakan secara default, terutama pemula, karena keserbagunaannya, prediktabilitas umum, dan mode pengambilan yang berguna. Namun, MySQLi akan menjadi pilihan yang lebih baik untuk pengguna tingkat lanjut yang menginginkan fungsionalitas khusus MySQL terbaru Agak ironis bahwa pengembang PHP yang lebih berpengalaman cenderung menganggap PDO adalah satu-satunya pilihan yang dapat diterima 100%, sementara pemula cenderung menggunakan MySQLi. Ini benar-benar gila dari kedua ujungnya. Tentu saja sebagian besar pengembang tidak benar-benar membutuhkan fitur ekstra canggih yang ditawarkan MySQLi, tetapi tentu saja bisa sangat berguna bagi beberapa orang, seperti yang disebutkan sebelumnya. Sangat mengherankan bahwa para pemula takut untuk mencoba sesuatu yang "baru" dan beralih ke PDO, sementara banyak pengguna tingkat lanjut mengucapkan argumen "kemudahan beralih dari driver basis data" sebagai keuntungan PDO. Siapa pun yang mempercayai mitos bahwa Anda dapat dengan mudah beralih antar database di PDO jelas tidak pernah mencoba melakukannya. Setiap driver berbeda, dan peralihan dari Microsoft SQL Server ke MySQL pasti tidak akan otomatis. Pertama-tama mari kita perjelas satu hal, sintaksnya sangat mirip — hampir identik, dan saya akan menyajikannya dalam contoh. PDO juga bukan lapisan abstraksi di atas MySQLi, melainkan di atas PDO_MYSQL Jika PDO akhirnya mengikuti semua fungsionalitas MySQL terbaru atau berbeda, maka saya dapat melihat mengapa MySQLi harus dihilangkan; . Meskipun PDO memang memiliki beberapa fitur khusus driver, PDO tidak memiliki semua atau mengikuti yang terbaru. Inilah tepatnya mengapa saya tidak berpikir MySQLi dan PDO belum tentu merupakan pesaing, melainkan dua perpustakaan yang kuat dengan fokus yang sangat berbeda untuk saat ini. Jelas PDO harus lebih banyak digunakan. Tapi seperti yang dikatakan sebelumnya, perbedaannya cukup banyak diabaikan. Seperti yang disebutkan beberapa kali sebelumnya, kelangsungan hidup MySQLi bergantung pada penangkapan PDO, bersama dengan PDO terutama bertahan dengan fitur yang digunakan di antara sebagian besar driver DB yang didukungnya. Perbedaan KodeSeperti 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 Saya tidak akan pernah mengerti mengapa PDO dan MySQLi memperumit masalah dengan memaksa Anda menggunakan dua metode terpisah untuk menggunakan pernyataan yang sudah disiapkan. Untungnya PDO menghapus kebutuhan untuk menggunakan fungsi ikat khusus — meskipun saya tidak yakin mengapa hal yang sama tidak dilakukan untuk 7. MySQLi dan PDO yang tidak disiapkan benar-benar tidak terlalu buruk, dan hanya implementasi pernyataan yang disiapkan yang sangat disayangkan yang menyebabkannya tampak bertele-tele. Misalnya, di API PostgreSQL khusus vendor, Anda dapat melakukannya seperti ini. Berikut adalah contoh bagaimana Anda melakukan kueri "tidak siap" untuk mengambil larik asosiatif dengan MySQLi dan PDO, untuk referensi
Pada kenyataannya, rute terbaik adalah menggunakan pembungkus, pembuat kueri, atau ORM. Saya memiliki pembungkus MySQLi yang belum sempurna yang mungkin Anda sukai. Sementara PDO adalah langkah ke arah yang benar, karena Anda dapat mengikat nilai secara langsung ke dalam eksekusi, itu masih belum ideal. Di kelas yang saya buat, Anda dapat merangkai semua panggilan Anda, sambil meneruskan nilai untuk diikat sebagai argumen parameter. Lihat apa yang dapat Anda lakukan
Anda sekarang memiliki seluruh array asosiatif yang disimpan dalam variabel dengan cara yang jauh lebih ringkas. Aneh mengapa PDO dan MySQLi tidak melakukannya seperti ini Untuk tutorial selanjutnya, kita akan menggunakan pernyataan yang telah disiapkan, karena tidak ada alasan bagus untuk tidak menggunakannya untuk perlindungan injeksi SQL, kecuali jika Anda menggunakan fitur seperti async, yang saat ini tidak mendukungnya. Jika tidak, Anda harus memformat kueri dengan benar secara manual Membuat Koneksi Database BaruPDO _MySQLi
PDO _MySQLi _Perlu dicatat bahwa dengan PDO, Anda dapat merangkai 8 dan 7, meskipun Anda tidak akan mendapatkan baris yang terpengaruh, jadi menurut saya itu tidak bergunaDapatkan Jumlah Baris TerpengaruhPDO
MySQLi
Dapatkan Kunci Utama Terbaru DimasukkanPerhatikan, bagaimana keduanya menggunakan variabel koneksi, bukan 0PDO
MySQLi _0Dapatkan Baris yang CocokPDO Di PDO, satu-satunya cara untuk mencapainya adalah dengan menyetelnya sebagai opsi koneksi untuk mengubah perilaku 1, sayangnya. Ini berarti _1 akan mengembalikan baris yang cocok atau baris diubah untuk seluruh koneksi database Anda, tetapi tidak keduanya _1MySQLi _2Ini akan menampilkan seluruh rangkaian informasi, seperti itu _3Saya tidak tahu mengapa mereka berpikir ini akan menjadi implementasi yang bijak, karena akan jauh lebih nyaman dalam sebuah array. Untungnya, Anda bisa melakukan ini _4Sekarang Anda dapat mengakses nilai dengan cukup mudah. Perhatikan, bahwa nilainya adalah string, jadi Anda dapat memasukkan semua nilai ke int, jadi 3 dapat bekerja atau memeriksa dengan ketat 4 _5MengambilAmbil Array AsosiatifPDO _6MySQLi _7Ambil Baris TunggalPDO _8MySQLi _9Ambil Nilai Tunggal (Skalar)PDO 0MySQLi 1Ambil Array ObjekPDO 2MySQLi _3PDO benar-benar bersinar di sini seperti yang Anda lihat. Sangat aneh mengapa MySQLi tidak memiliki sesuatu seperti 5. PDO bahkan melangkah lebih jauh dan memiliki cara yang luar biasa untuk menangani perilaku default yang mengganggu karena dipanggil setelah konstruktor kelas, melalui bitwise dengan 6. Dimungkinkan untuk mereplikasi perilaku ini di MySQLi, tetapi bergantung pada mengabaikan konstruktor dan mengandalkan sihir 7 atau dengan hanya menyetelnya di konstruktor jika tidak sama dengan nilai defaultSukaPDO _4MySQLi 5Ambil ModeSejauh ini, ini adalah fitur favorit saya tentang PDO. Mode pengambilan di PDO sangat berguna dan cukup mengejutkan bahwa MySQLi belum menambahkannya Ambil Pasangan Kunci/NilaiPDO _6MySQLi _7Keluaran _8Ambil Kolom GrupPDO _9MySQLi _0Keluaran _1Larik Pasangan Kunci/Nilai AmbilPDO _2MySQLi _3Keluaran _4Ambil GrupPDO _5MySQLi _6Keluaran _7Dimana Dalam ArrayPDO _8MySQLi _9Where In Array Dengan Placeholder LainPDO 0MySQLi _1TransaksiPDO _2Anda mungkin bertanya-tanya mengapa saya hanya memeriksa kebenaran pada 7 dengan PDO. Hal ini disebabkan oleh fakta bahwa itu dapat mengembalikan false, sementara gagal secara diam-diam. Ini aMySQLi _3MySQLi juga memiliki gotcha, tetapi solusinya adalah mengubah kesalahan menjadi pengecualian dengan penangan global. Baca lebih lanjut Parameter BernamaIni adalah fitur khusus PDO, tetapi hanya berguna jika mode emulasi dimatikan. Jika tidak, Anda hanya dapat menggunakan variabel yang sama satu kali. Juga harus dicatat bahwa usus besar utama tidak diperlukan, tetapi ini tidak didokumentasikan di mana pun. Kemungkinan besar pada akhirnya akan tetap, tetapi Anda tidak pernah tahu, saya kira. Anda juga tidak dapat mencampur _9 placeholder dengan yang bernama;
Mengapa saya harus menggunakan PDO PHP?PDO dalam PHP menawarkan lapisan abstraksi akses data, yang berarti Anda dapat mengeluarkan kueri dan mengambil data menggunakan fungsi yang sama terlepas dari database mana yang Anda gunakan. PDO isn't a database abstraction; it doesn't rewrite SQL or imitates features that aren't accessible.
Apa kelebihan PDO dibandingkan MySQLi?Baik MySQLi maupun PDO memiliki kelebihan masing-masing. PDO akan bekerja pada 12 sistem database yang berbeda, sedangkan MySQLi hanya akan bekerja dengan database MySQL . Jadi, jika Anda harus mengalihkan proyek Anda untuk menggunakan database lain, PDO mempermudah prosesnya. Anda hanya perlu mengubah rangkaian koneksi dan beberapa kueri.
Apa manfaat utama menggunakan PHP Data Objects PDO daripada MySQLi?Dukungan Basis Data
. Pada saat penulisan ini, PDO mendukung 12 driver berbeda, berlawanan dengan MySQLi, yang hanya mendukung MySQL. database driver support. At the time of this writing, PDO supports 12 different drivers, opposed to MySQLi, which supports MySQL only.
Apakah PDO lebih aman daripada MySQLi?PDO lebih aman daripada dua opsi pertama dan juga lebih cepat dibandingkan dengan MySQLi prosedural dan berorientasi objek MySQLi. PDO adalah lapisan akses basis data yang menyediakan antarmuka yang cepat dan konsisten untuk mengakses dan mengelola basis data dalam aplikasi PHP. |