Apakah mysqli lebih baik dari mysql?

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

Apakah MySQLi lebih cepat dari MySQL?

Ekstensi MySQL sedikit lebih cepat daripada MySQLi di sebagian besar tolok ukur yang pernah saya lihat dilaporkan. Perbedaannya sangat kecil, bagaimanapun, ini mungkin bukan kriteria Anda untuk memutuskan di antara keduanya. Faktor lain mengerdilkan perbedaan kinerja antara mysql dan mysqli.

Apakah MySQLi berbeda dengan MySQL?

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 manfaat dari MySQLi?

Ekstensi MySQLi memberikan berbagai manfaat sehubungan dengan pendahulunya, yang paling menonjol (menurut situs web PHP) adalah. .
Antarmuka berorientasi objek
Dukungan untuk pernyataan yang disiapkan
Dukungan untuk beberapa pernyataan
Dukungan untuk transaksi
Dukungan debug yang ditingkatkan

Apakah MySQLi tidak digunakan lagi di PHP 7?

Yang tertua menggunakan ekstensi MySQL, yang tidak digunakan lagi sejak PHP 5. 5 dan dihapus sepenuhnya di PHP 7 . Fungsi mysql() tidak lagi berfungsi di PHP 7.