Mysqli, berorientasi objek vs mysqli, prosedural vs pdo

Ekstensi mysqli menampilkan antarmuka ganda. Ini mendukung paradigma pemrograman prosedural dan berorientasi objek

Pengguna yang bermigrasi dari ekstensi mysql lama mungkin lebih suka antarmuka prosedural. Antarmuka prosedural mirip dengan ekstensi mysql lama. Dalam banyak kasus, nama fungsi hanya berbeda dengan awalan. Beberapa fungsi mysqli mengambil pegangan koneksi sebagai argumen pertama mereka, sedangkan fungsi pencocokan di antarmuka mysql lama menganggapnya sebagai argumen terakhir opsional

Contoh #1 Migrasi mudah dari ekstensi mysql lama

$mysqli = mysqli_connect("example.com", "user", "password", "database");
$result = mysqli_query($mysqli, "SELECT 'Please do not use the deprecated mysql extension for new development. ' AS _msg FROM DUAL");
$row = mysqli_fetch_assoc($result);
echo $row['_msg'];

$mysql = mysql_connect("example.com", "user", "password");
mysql_select_db("test");
$result = mysql_query("SELECT 'Use the mysqli extension instead.' AS _msg FROM DUAL", $mysql);
$row = mysql_fetch_assoc($result);
echo $row['_msg'];

Contoh di atas akan ditampilkan

Please do not use the deprecated mysql extension for new development. Use the mysqli extension instead.

Antarmuka berorientasi objek

Selain antarmuka prosedural klasik, pengguna dapat memilih untuk menggunakan antarmuka berorientasi objek. Dokumentasi diatur menggunakan antarmuka berorientasi objek. Antarmuka berorientasi objek menunjukkan fungsi yang dikelompokkan menurut tujuannya, membuatnya lebih mudah untuk memulai. Bagian referensi memberikan contoh untuk kedua varian sintaks

Tidak ada perbedaan kinerja yang signifikan antara kedua antarmuka. Pengguna dapat mendasarkan pilihan mereka pada preferensi pribadi

Contoh #2 Antarmuka berorientasi objek dan prosedural

$mysqli = mysqli_connect("example.com", "user", "password", "database");_

$result = mysqli_query($mysqli, "SELECT 'A world full of ' AS _msg FROM DUAL");
$row = mysqli_fetch_assoc($result);
echo $row['_msg'];

$mysqli = new mysqli("example.com", "user", "password", "database");_

$result = $mysqli->query("SELECT 'choices to please everybody.' AS _msg FROM DUAL");
$row = $result->fetch_assoc();
echo $row['_msg'];

Contoh di atas akan ditampilkan

A world full of choices to please everybody.
_

Antarmuka berorientasi objek digunakan untuk memulai cepat karena bagian referensi diatur seperti itu

Mencampur gaya

Dimungkinkan untuk beralih antar gaya kapan saja. Mencampur kedua gaya tidak disarankan karena alasan kejelasan kode dan gaya pengkodean

Jadi, jika Anda harus mengalihkan proyek Anda untuk menggunakan database lain, PDO mempermudah prosesnya. Anda hanya perlu mengubah rangkaian koneksi dan beberapa kueri. Dengan MySQLi, Anda perlu menulis ulang seluruh kode - termasuk kueri

Keduanya berorientasi objek, tetapi MySQLi juga menawarkan API prosedural

Keduanya mendukung Pernyataan Disiapkan. Pernyataan Disiapkan melindungi dari injeksi SQL, dan sangat penting untuk keamanan aplikasi web


Contoh MySQL di Sintaks MySQLi dan PDO

Dalam bab ini, dan dalam bab-bab selanjutnya, kami mendemonstrasikan tiga cara bekerja dengan PHP dan MySQL

  • MySQLi (berorientasi objek)
  • MySQLi (prosedur)
  • PDO

Instalasi MySQLi

Untuk Linux dan Windows. Ekstensi MySQLi diinstal secara otomatis dalam banyak kasus, ketika paket mysql php5 diinstal

Untuk detail pemasangan, buka. http. //php. net/manual/en/mysqli. instalasi. php


Instalasi PDO

Untuk detail pemasangan, buka. http. //php. net/manual/en/pdo. instalasi. php



Buka Koneksi ke MySQL

Sebelum kita dapat mengakses data di database MySQL, kita harus dapat terhubung ke server

Contoh (Berorientasi Objek MySQLi)

$namaserver = "localhost";
$namapengguna = "namapengguna";
$sandi = "sandi";

// Buat koneksi
$conn = new mysqli($servername, $username, $password);

// Periksa koneksi
if ($conn->connect_error) {
die("Koneksi gagal. ". $conn->connect_error);
}
gema "Berhasil terhubung";
?>


Perhatikan contoh berorientasi objek di atas

$connect_error rusak hingga PHP 5. 2. 9 dan 5. 3. 0. Jika Anda perlu memastikan kompatibilitas dengan versi PHP sebelum 5. 2. 9 dan 5. 3. 0, gunakan kode berikut sebagai gantinya

// Periksa koneksi
jika (mysqli_connect_error()) {
die("Koneksi database gagal. ". mysqli_connect_error());
}

Contoh (Prosedur MySQLi)

$namaserver = "localhost";
$namapengguna = "namapengguna";
$sandi = "sandi";

// Buat koneksi
$koneksi = mysqli_connect($namaserver, $namapengguna, $sandi);

// Periksa koneksi
jika (. $conn) {
die("Koneksi gagal. ". mysqli_connect_error());
}
gema "Berhasil terhubung";
?>


Contoh (PDO)

$namaserver = "localhost";
$namapengguna = "namapengguna";
$sandi = "sandi";

mencoba {
$conn = new PDO("mysql. host=$servername;dbname=myDB", $username, $password);
// setel mode kesalahan PDO ke pengecualian
$conn->setAttribute(PDO. ATTR_ERRMODE, PDO. ERRMODE_EXCEPTION);
gema "Berhasil terhubung";
} catch(PDOException $e) {
echo "Koneksi gagal. ". $e->getMessage();
}
?>


Catatan. Dalam contoh PDO di atas kami juga telah menentukan database (myDB). PDO memerlukan database yang valid untuk terhubung. Jika tidak ada database yang ditentukan, pengecualian dilemparkan

Tip. Manfaat besar PDO adalah memiliki kelas pengecualian untuk menangani masalah apa pun yang mungkin terjadi dalam kueri basis data kami. Jika pengecualian dilemparkan di dalam blok try{} , skrip berhenti mengeksekusi dan mengalir langsung ke blok catch(){ } pertama


Tutup Koneksi

Sambungan akan ditutup secara otomatis saat skrip berakhir. Untuk menutup koneksi sebelumnya, gunakan yang berikut ini

Apa perbedaan antara prosedural MySQLi dan PDO?

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.

Apakah PDO lebih baik dari MySQLi?

Perbedaan Menghubungkan Menggunakan MySQLi dan PDO . 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. The main advantage of PDO over MySQLi is in the database support. PDO supports 12 different database types, in opposition to MySQLi, which supports MySQL only. When you have to switch your project to use another database, PDO makes the process simpler.

Apakah objek PDO

PDO dan MySQLi keduanya Berorientasi Objek , tetapi MySQLi juga menawarkan API prosedural. Keduanya mendukung Pernyataan Disiapkan. Pernyataan yang Disiapkan penting untuk keamanan aplikasi web, karena melindungi dari injeksi SQL.

Apakah objek MySQLi

Ekstensi mysqli menampilkan antarmuka ganda. Ini mendukung paradigma pemrograman prosedural dan berorientasi objek . Pengguna yang bermigrasi dari ekstensi mysql lama mungkin lebih suka antarmuka prosedural. Antarmuka prosedural mirip dengan ekstensi mysql lama.