Untuk memahami perbedaan antara MySQL, MySQLi, dan PDO, kita harus mengetahuinya satu per satu. Ini hanyalah API dari PHP yang digunakan untuk mengakses database dan tabel MySQL. Pengembang dapat memilih salah satu dari mereka untuk proyek mereka, namun harus diketahui bahwa MySQL tidak dapat digunakan dengan PHP 7 dan versi yang lebih baru. Namun, pengembang dapat menggunakan MySQL dengan PHP 5, yang sekarang sudah tidak digunakan lagi. Mari kita memiliki beberapa informasi lebih lanjut tentang masing-masing
- MySQL. Ini adalah ekstensi utama yang dirancang untuk membantu aplikasi PHP mengirim dan menerima data dari database MySQL. Namun, penggunaan MySQL telah ditinggalkan dan dihapus sejak PHP 7 dan versi yang lebih baru. Inilah mengapa tidak disarankan untuk proyek baru, dan itulah alasan mengapa ekstensi MySQLi dan PDO lebih banyak digunakan saat ini
- MySQLi. 'i' di MySQLi adalah singkatan dari Peningkatan. Oleh karena itu, ini juga dikenal sebagai versi MySQL yang ditingkatkan. Ini memiliki banyak fitur baru yang akan dibahas nanti di artikel
- PDO – Objek Data PHP. Keuntungan utama menggunakan PDO adalah mendukung, dan menyediakan metode akses yang seragam ke 11 database yang berbeda
Database yang didukung PDO adalah sebagai berikut
- CUBRID
- MS SQL Server
- Firebird/Interbase
- IBM
- Informix
- MySQL
- Peramal
- ODBC dan DB2
- PostgreSQL
- SQLite
- 4D
Namun, PDO tidak mengizinkan penggunaan semua fitur yang tersedia di versi server MySQL saat ini. Misalnya, PDO tidak mengizinkan dukungan untuk banyak pernyataan MySQL.
Membandingkan MySQL, MySQLi, dan PDO
- Koneksi ke Database
- Penanganan Kesalahan
- Pengambilan Data
- Dukungan API
- Keamanan
Koneksi ke database
MySQL. Kode MySQL untuk terhubung ke database adalah.
php
<?php
// Add the hostname, username and password of the database_
$connection_link = mysql_connect("host", "username", "password");
// Select query for the database_
mysql_select_db("database_name",$connection_link);
// Set the charset, UTF-8 to be used for projects_
mysql_set_charset(// Add the hostname, username and password of the database0// Add the hostname, username and password of the database1$connection_link);
// Add the hostname, username and password of the database_4
MySQLi. Dalam kasus MySQLi, hanya ada kode satu baris. Pengguna menginstansiasi instance MySQLi menggunakan nama pengguna, kata sandi, dan nama database.
php
<?php
// Add the hostname, username and password of the database_6
// Add the hostname, username and password of the database7 // Add the hostname, username and password of the database8// Add the hostname, username and password of the database9 $connection_link0$connection_link1// Add the hostname, username and password of the database1$connection_link3// Add the hostname, username and password of the database1$connection_link5// Add the hostname, username and password of the database1________2______7);
// Add the hostname, username and password of the database_4
PDO. Dalam kasus PDO, objek PDO baru harus dibuat.
php
<?php
= mysql_connect("host", "username", "password");1
= mysql_connect("host", "username", "password");2 // Add the hostname, username and password of the database8// Add the hostname, username and password of the database9 = mysql_connect("host", "username", "password");5= mysql_connect("host", "username", "password");6// Add the hostname, username and password of the database1
= mysql_connect("host", "username", "password");8$connection_link3// Add the hostname, username and password of the database1$connection_link5);
// Add the hostname, username and password of the database_4
Keuntungan besar menggunakan PDO adalah membuat pengalihan proyek ke database lain menjadi lebih sederhana. Oleh karena itu, satu-satunya hal yang harus dilakukan adalah mengubah rangkaian koneksi dan kueri yang tidak akan didukung oleh database baru
Penanganan Kesalahan. Penanganan kesalahan adalah deteksi, dan penyelesaian kesalahan aplikasi, pemrograman atau komunikasi. Penanganan kesalahan membantu menjaga aliran normal eksekusi program, karena kesalahan dalam program ditangani dengan baik, sehingga membuat program berjalan dengan baik
MySQL.
php
<?php
// Select query for the database5 // Select query for the database6$connection_link// Select query for the database8
// Select query for the database9mysql_select_db("database_name",0 mysql_select_db("database_name",1mysql_select_db("database_name",2$connection_linkmysql_select_db("database_name",4
// Add the hostname, username and password of the database_4
Metode 'mati' digunakan untuk penanganan kesalahan di MySQL tetapi tidak dianggap sebagai pendekatan penanganan kesalahan yang baik. Ini karena mati tiba-tiba mengakhiri skrip dan kemudian menampilkan kesalahan ke layar. Ini dapat membuat database rentan terhadap peretas
MySQLi. Penanganan kesalahan di MySQLi jika sedikit lebih mudah. mysqli. $error (mysqli_error) mengembalikan deskripsi string dari kesalahan terakhir.
php
<?php
mysql_select_db("database_name",7 mysql_select_db("database_name",8mysql_select_db("database_name",9$connection_link0
$connection_link1$connection_link2mysql_select_db("database_name",9$connection_link4
$connection_link5
// Add the hostname, username and password of the database_4
PDO. PDO memiliki metode penanganan kesalahan terbaik dari ketiganya. Ini karena ketersediaan blok try-catch. Juga, ada beberapa mode kesalahan yang dapat digunakan untuk penanganan kesalahan
- PDO. ERRMODE_SILENT. Ini digunakan untuk memeriksa setiap hasil dan kemudian memeriksa $db->errorInfo() untuk mendapatkan rincian kesalahan
- PDO. ERRMODE_WARNING. Peringatan tidak menghentikan skrip. Ini memberikan peringatan run-time dan bukan kesalahan fatal
- PDO. ERRMODE_EXCEPTION. Itu melempar pengecualian yang menunjukkan kesalahan yang diangkat oleh PDO. Seharusnya tidak melempar PDOException dengan kode Anda. Kerjanya seperti or die(mysql_error()) ketika tidak tertangkap. Tapi itu bisa menangkap PDOException ini dan menangani seperti yang kita inginkan
Pengambilan Data
MySQL. Loop pemrograman umum seperti for, atau while loop dapat digunakan untuk tujuan tersebut. Misalkan ada tabel bernama 'data' di database dan kami ingin menampilkan nama pengguna dari setiap baris tabel. While loop dapat digunakan dengan cara berikut untuk melakukan pekerjaan.
php
<?php
// Select query for the database5 $connection_link9);0// Select query for the database8
// Select query for the database_9mysql_select_db("database_name",0 mysql_select_db("database_name",1);5
);6 );7// Select query for the database5);
// Set the charset, UTF-8 to be used for projects0// Set the charset, UTF-8 to be used for projects1// Set the charset, UTF-8 to be used for projects2 // Set the charset, UTF-8 to be used for projects3// Select query for the database5// Set the charset, UTF-8 to be used for projects5
$connection_link1// Set the charset, UTF-8 to be used for projects7 // Set the charset, UTF-8 to be used for projects2// Set the charset, UTF-8 to be used for projects9mysql_set_charset(0mysql_set_charset(1
$connection_link5
// Add the hostname, username and password of the database_4
MySQLi. MySQLi juga menggunakan loop untuk tujuan ini. Namun, kodenya akan sedikit berbeda.
php
<?php
// Set the charset, UTF-8 to be used for projects0// Set the charset, UTF-8 to be used for projects1// Set the charset, UTF-8 to be used for projects2 // Add the hostname, username and password of the database8// Select query for the database5// Add the hostname, username and password of the database00
$connection_link1// Set the charset, UTF-8 to be used for projects7 // Set the charset, UTF-8 to be used for projects2// Set the charset, UTF-8 to be used for projects9$connection_link3// Add the hostname, username and password of the database06// Add the hostname, username and password of the database07// Add the hostname, username and password of the database08
$connection_link5
// Add the hostname, username and password of the database_4
PDO. PDO memiliki banyak pernyataan bawaan yang membantu dalam kasus seperti itu
- Pernyataan PDOS. ambilSemua(). Ini mengembalikan hasil dalam bentuk array, yang berisi semua baris hasil
- Pernyataan PDOS. ambilKolom(). Itu mengambil satu kolom dari baris berikutnya dari kumpulan hasil
- Pernyataan PDOS. ambilObjek(). Ini pertama mengambil baris berikutnya dan kemudian mengembalikannya sebagai objek
- Pernyataan PDOS. setFetchMode(). Ini menetapkan mode pengambilan default untuk pernyataan tersebut
Dukungan API. Dalam hal dukungan API, PDO menyediakan pendekatan berorientasi objek. MySQLi menyediakan cara prosedural, mirip dengan MySQL. Inilah alasan mengapa pengembang yang berasal dari latar belakang MySQL lebih suka menggunakan MySQLi. Namun, pemrogram berorientasi objek lebih memilih PDO karena kompatibilitasnya dengan sejumlah besar database. Dengan demikian, pemrogram berorientasi objek lebih menyukai PDO, sementara pemrogram prosedural lebih menyukai MySQL dan MySQLi. Keamanan. Keamanan basis data digunakan untuk melindungi basis data dan informasi yang dikandungnya dari peretas dan serangan mereka. Peretas umumnya menggunakan suntikan SQL untuk mengganggu basis data. Dengan demikian, keamanan dari suntikan harus dipastikan. Baik PDO dan MySQLi menyediakan keamanan injeksi SQL. Misalkan seorang peretas mencoba menyuntikkan injeksi SQL melalui parameter kueri HTTP 'nama depan' menggunakan metode POST.
php
// Add the hostname, username and password of the database11// Set the charset, UTF-8 to be used for projects9// Add the hostname, username and password of the database13// Add the hostname, username and password of the database14// Add the hostname, username and password of the database15 // Add the hostname, username and password of the database16
Jika injeksi lolos, itu akan ditambahkan dalam kueri "sebagaimana adanya". Dengan demikian, ini akan menghapus semua baris dari tabel pengguna. Di PDO, ada pelolosan manual untuk menambah keamanan.
php
// Add the hostname, username and password of the database_17 // Add the hostname, username and password of the database18// Add the hostname, username and password of the database11// Set the charset, UTF-8 to be used for projects9// Add the hostname, username and password of the database21// Add the hostname, username and password of the database22
= mysql_connect("host", "username", "password");2// Add the hostname, username and password of the database24// Add the hostname, username and password of the database17// Add the hostname, username and password of the database26
Perbedaan antara PDO. quote() dan mysqli_real_escape_string() adalah yang pertama lolos dari string dan kutipan, sedangkan yang terakhir hanya akan lolos dari string dan tanda kutip harus ditambahkan secara manual