Cara menggunakan php pdo

Halo, Pada seri tutorial PHP kali ini kita akan mempelajari cara mengaktifkan ekstensi PDO untuk beberapa driver database


Pengertian PDO

PDO adalah singkatan dari PHP Data Object dan merupakan ekstensi PHP yang dapat digunakan sebagai level abstraksi untuk koneksi antara program PHP dan berbagai database. PHP Data Objects (PDO) adalah ekstensi PHP yang mendefinisikan antarmuka yang ringan dan konsisten untuk mengakses database PHP

Setiap driver database, yang mengimplementasikan antarmuka PDO, dapat menampilkan fitur khusus database melalui fungsi ekspansi umum. Perhatikan bahwa kami tidak dapat melakukan operasi basis data hanya dengan menggunakan ekstensi PDO. Untuk itu, kita perlu menggunakan driver PDO khusus untuk mengakses server database


PDO menyediakan tingkat abstraksi untuk mengakses data, yang berarti bahwa basis data apa pun yang Anda gunakan, Anda akan menggunakan fitur yang sama untuk mengirim kueri dan menerima data. PDO tidak menyediakan abstraksi dari database

Salah satu keuntungan PDO adalah tidak menulis ulang SQL, atau menyalin fitur yang hilang di beberapa database. Untuk itu, Anda harus menggunakan lapisan abstraksi yang dikembangkan sepenuhnya untuk mendapatkan fitur ini. Dari PHP versi 5. 1 PDO terintegrasi dengan PHP dan tersedia sebagai ekstensi PECL untuk PHP 5. 0

Keuntungan Menggunakan PDO


  1. Portabilitas. Dapat bekerja dengan beberapa DBMS (MySQL, PostgreSQL, SQLite, Oracle, Microsoft SQL Server)
  2. Fleksibilitas. Jika kita menggunakan PDO dalam suatu proyek dan ingin mengubah DBMS, kita dapat melakukannya dengan mengubah satu baris kode
  3. Kecepatan. PDO adalah pustaka C/C++, bahasa yang dikompilasi, tidak diinterpretasikan seperti PHP

Jenis DBMS yang mendukung PDO

Hingga saat ini PDO mendukung setidaknya 12 jenis DBMS (Database Management Server)

  • CUBRID
  • MS SQL Server
  • burung api
  • IBM
  • Informix
  • MySQL
  • MS SQL Server
  • Peramal
  • ODBC dan DB2
  • PostgreSQL
  • SQLite
  • 4D


Cara Mengaktifkan Ekstensi PDO di PHP

Secara default Ekstensi PDO aktif di PHP versi 5. 6 ke atas, tetapi tidak semua driver database dapat digunakan. Dengan kata lain, untuk alasan performa, PHP menonaktifkan beberapa driver database seperti Oracle atau PostgreSQL di PDO


Cara mengaktifkan PDO untuk driver database lainnya cukup sederhana, kita hanya perlu mengubah file php. ini . file php. Ini adalah file konfigurasi yang digunakan PHP. Karena saya menggunakan PHP yang diinstal dari XAMPP di drive C, lokasinya adalah. C. \xampp\php\php. ini.


Cara menggunakan php pdo



untuk mengaktifkan ekstensi PDO pada file php. ini, silahkan cari dengan menggunakan CTRL + F kata "pdo". Nanti akan ada extension PDO dari beberapa database driver. Untuk mengaktifkannya, harap hilangkan titik koma (;) di depan teks ekstensi . Tidak perlu mengaktifkan semua driver database kami. Apa yang ingin kita gunakan untuk koneksi database.


Selanjutnya, simpan file php. ini, kemudian restart web server Apache (matikan dan hidupkan lagi melalui XAMPP Control Panel)


Untuk mengetahui apakah ekstensi PDO sudah aktif, buat file PHP dengan nama terserah sobat. Kemudian masukkan kode berikut

Berbeda dengan fungsi mysql_ dan mysqli_, PDO tidak perlu memanggil fungsi _______0_______0. Cukup buat objek PDO, maka objek siap digunakan, tidak perlu melakukan

PDO::ERRMODE_EXCEPTION];
$dsn = "mysql:host=$host;charset=utf8;dbname=$dbname;";
$db = new PDO($dsn, $dbuser, $dbpass, $opts);
?>
0 dan
PDO::ERRMODE_EXCEPTION];
$dsn = "mysql:host=$host;charset=utf8;dbname=$dbname;";
$db = new PDO($dsn, $dbuser, $dbpass, $opts);
?>
2 database. Sintaks untuk membuat objek PDO adalah sebagai berikut

$db = new PDO($dsn, $user, $pass, $opts);

Oleh

  • PDO::ERRMODE_EXCEPTION];
    $dsn = "mysql:host=$host;charset=utf8;dbname=$dbname;";
    $db = new PDO($dsn, $dbuser, $dbpass, $opts);
    ?>
    3, Nama Sumber Data, menjelaskan jenis server basis data, lokasi server basis data, dan sebagainya
  • PDO::ERRMODE_EXCEPTION];
    $dsn = "mysql:host=$host;charset=utf8;dbname=$dbname;";
    $db = new PDO($dsn, $dbuser, $dbpass, $opts);
    ?>
    4 dan
    PDO::ERRMODE_EXCEPTION];
    $dsn = "mysql:host=$host;charset=utf8;dbname=$dbname;";
    $db = new PDO($dsn, $dbuser, $dbpass, $opts);
    ?>
    5, nama pengguna dan kata sandi MySQL,
  • PDO::ERRMODE_EXCEPTION];
    $dsn = "mysql:host=$host;charset=utf8;dbname=$dbname;";
    $db = new PDO($dsn, $dbuser, $dbpass, $opts);
    ?>
    6, adalah opsi penggunaan PDO

Dalam konstruktor PDO di atas, semua parameter selain _______0_______3 adalah opsional. Namun, untuk koneksi ke MySQL, _______0________4 dan _______0_______5 juga diperlukan. Silakan coba buat file

CREATE DATABASE IF NOT EXISTS toko;
CREATE TABLE IF NOT EXISTS toko.barang (
id INT PRIMARY KEY AUTO_INCREMENT,
  tipe VARCHAR(50),
  kategori VARCHAR(50),
  harga INT
) engine=innodb;
0 yang berisi isinya

PDO::ERRMODE_EXCEPTION];
$dsn = "mysql:host=$host;charset=utf8;dbname=$dbname;";
$db = new PDO($dsn, $dbuser, $dbpass, $opts);
?>

$host

Pada contoh di atas, _______11________1 diisi dengan _______11_______2, bisa juga diisi dengan _______11_______3. Berdasarkan hasil pengujian penulis, pada sistem operasi Windows koneksi ke

CREATE DATABASE IF NOT EXISTS toko;
CREATE TABLE IF NOT EXISTS toko.barang (
id INT PRIMARY KEY AUTO_INCREMENT,
  tipe VARCHAR(50),
  kategori VARCHAR(50),
  harga INT
) engine=innodb;
4 lebih cepat dibandingkan ke
CREATE DATABASE IF NOT EXISTS toko;
CREATE TABLE IF NOT EXISTS toko.barang (
id INT PRIMARY KEY AUTO_INCREMENT,
  tipe VARCHAR(50),
  kategori VARCHAR(50),
  harga INT
) engine=innodb;
5. Dan di sisi lain di Linux, koneksi ke
CREATE DATABASE IF NOT EXISTS toko;
CREATE TABLE IF NOT EXISTS toko.barang (
id INT PRIMARY KEY AUTO_INCREMENT,
  tipe VARCHAR(50),
  kategori VARCHAR(50),
  harga INT
) engine=innodb;
5 lebih cepat daripada ke _______11_______4. Jadi silakan pilih sesuai dengan sistem operasi Anda

$namadb

$dbname adalah nama database target awal. Agar kode program di atas berjalan lancar maka database toko harus sudah ada. Untuk pengujian, melalui phpMyAdmin atau command prompt, buat database dan tabel di MySQL dengan perintah

CREATE DATABASE IF NOT EXISTS toko;
CREATE TABLE IF NOT EXISTS toko.barang (
id INT PRIMARY KEY AUTO_INCREMENT,
  tipe VARCHAR(50),
  kategori VARCHAR(50),
  harga INT
) engine=innodb;

Atau saat menggunakan PostgreSQL

CREATE DATABASE IF NOT EXISTS toko;
CREATE TABLE IF NOT EXISTS toko.barang (
  id SERIAL PRIMARY KEY,
  tipe VARCHAR(50),
  kategori VARCHAR(50),
  harga INT
) engine=innodb;

$ dll

Variabel ini dapat mengatur berbagai hal, seperti jenis server database, alamat server tujuan, database awal yang digunakan, dan parameter lainnya. Variabel $host dan $dbname di atas sebenarnya hanya bagian dari $dsn ini. Dibuatkan variabel-variabel tersendiri agar kode program ini mudah dibaca dan dijelaskan. Pada contoh di atas, kita juga menentukan parameter charset, yang merupakan pengkodean karakter di server database. Kami menggunakan charset utf8 yang dapat menampung semua jenis karakter, termasuk bahasa Arab, Jepang, Mandarin, Korea, dan sebagainya

$memilih

Variabel _______0________6 adalah opsional. Melalui variabel ini, kita dapat mengatur beberapa perilaku PDO. Pada contoh di atas, _______11________9 diberi nilai _______21_______0, sehingga ketika terjadi kesalahan, PDO akan mengeluarkan Exception yang dapat kita tangkap dengan struktur try-catch. Jika Anda tidak menggunakan $opts pada konstruktor PDO, opsi ini juga dapat diatur melalui metode

CREATE DATABASE IF NOT EXISTS toko;
CREATE TABLE IF NOT EXISTS toko.barang (
  id SERIAL PRIMARY KEY,
  tipe VARCHAR(50),
  kategori VARCHAR(50),
  harga INT
) engine=innodb;
1

Jika Anda hanya menggunakan MySQL, silakan lanjutkan ke tutorial berikutnya. Di bawah ini adalah hal-hal yang tidak terlalu penting untuk diketahui

Opsi pada perintah koneksi PDO di atas

CREATE DATABASE IF NOT EXISTS toko;
CREATE TABLE IF NOT EXISTS toko.barang (
  id SERIAL PRIMARY KEY,
  tipe VARCHAR(50),
  kategori VARCHAR(50),
  harga INT
) engine=innodb;
2, dapat dihilangkan hingga menjadi
CREATE DATABASE IF NOT EXISTS toko;
CREATE TABLE IF NOT EXISTS toko.barang (
  id SERIAL PRIMARY KEY,
  tipe VARCHAR(50),
  kategori VARCHAR(50),
  harga INT
) engine=innodb;
3. Dan opsi PDO dapat diatur setelah koneksi dengan menggunakan metode setAttribute(). Ada banyak atribut yang bisa diatur, bisa dilihat di manual PHP. Beberapa dari mereka

  • PDO. ATTR_ERRMODE, setel mode kesalahan. Ada beberapa pilihan nilai
    • PDO. ERRMODE_SILENT, adalah mode default. Ketika ada kesalahan, isikan saja variabel $db->errorInfo() dan $db->errorCode()
    • PDO. ERRMODE_WARNING, sama seperti mode silent, tetapi juga menghasilkan E_WARNING. Itu adalah peringatan kesalahan PHP
    • PDO. ERRMODE_EXCEPTION, melontarkan PDOException saat terjadi kesalahan
  • PDO. ATTR_DEFAULT_FETCH_MODE, menyetel mode pengambilan data. Mode yang tersedia akan dibahas pada topik pengumpulan data
  • PDO. ATTR_CASE, sesuaikan kapitalisasi nama kolom database

Contoh penggunaan perintah setAttribute()

$db = new PDO($dsn, $dbuser, $dbpass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);

Jika tidak diatur,

CREATE DATABASE IF NOT EXISTS toko;
CREATE TABLE IF NOT EXISTS toko.barang (
id INT PRIMARY KEY AUTO_INCREMENT,
  tipe VARCHAR(50),
  kategori VARCHAR(50),
  harga INT
) engine=innodb;
_9 akan menjadi
CREATE DATABASE IF NOT EXISTS toko;
CREATE TABLE IF NOT EXISTS toko.barang (
  id SERIAL PRIMARY KEY,
  tipe VARCHAR(50),
  kategori VARCHAR(50),
  harga INT
) engine=innodb;
5, dimana ketika terjadi error, PDO tidak melakukan apapun kecuali mengisi variabel
CREATE DATABASE IF NOT EXISTS toko;
CREATE TABLE IF NOT EXISTS toko.barang (
  id SERIAL PRIMARY KEY,
  tipe VARCHAR(50),
  kategori VARCHAR(50),
  harga INT
) engine=innodb;
6 dan
CREATE DATABASE IF NOT EXISTS toko;
CREATE TABLE IF NOT EXISTS toko.barang (
  id SERIAL PRIMARY KEY,
  tipe VARCHAR(50),
  kategori VARCHAR(50),
  harga INT
) engine=innodb;
7, pada mode ini penanganan error dapat dilakukan dengan

$perintah = $db->query($sql) or die("ERROR: ".implode(":",$db->errorInfo()));

Sedangkan saat menggunakan PDO. ERRMODE_EXCEPTION, kemudian penanganan error dilakukan dengan try-catch. Mode ini adalah mode yang direkomendasikan. Sebagai contoh

query($sql);
} catch (Exception $ex) {
    die("ERROR: ".implode(":",$db->errorInfo()));
}
?>

Selain MySQL, PDO dapat digunakan untuk terhubung ke database lain seperti MSSQL dan Postgresql. Untuk mengetahui driver PDO mana yang diinstal pada PHP Anda, Anda dapat menggunakan perintah PDO. getAvailableDrivers()

echo "
".print_r(PDO::getAvailableDrivers(), true)."
";

Keluaran

Array
(
    [0] => mysql
    [1] => odbc
    [2] => pgsql
)

Jika menggunakan database server lain, cara menggunakan pdo masih sama, hanya ada perbedaan saat membuat objek PDO. Berikut adalah beberapa contoh penggunaan dengan server database lain

Mengapa menggunakan PDO?

PDO bertujuan untuk membuat antarmuka yang seragam untuk koneksi ke berbagai jenis database . Ketika Anda menggunakan database yang didukung oleh PDO seperti MySQL, Oracle, MS.

Apa yang dimaksud dengan PDO?

" PDO - PHP Objek Data - adalah akses basis data lapisan yang menyediakan metode akses seragam ke beberapa basis data. " Ini tidak memperhitungkan sintaks khusus basis data, tetapi memungkinkan proses peralihan basis data dan platform menjadi lebih mudah, hanya dengan mengganti string koneksi di banyak contoh.

Apa perbedaan antara menggunakan mysqli dan PDO?

PDO menggunakan pemrograman objek, mysqli ekstensi tersedia dalam bentuk objek dan prosedural (diakses melalui < / a> fungsi - fungsi ) while mysql < /a> ekstensi seluruhnya menggunakan pemrograman prosedural.