Ekstensi POD ditambahkan di PHP5. Ekstensi ini menyediakan PDO kelas bawaan PHP untuk mengakses database. Database yang berbeda menggunakan nama metode yang sama untuk memecahkan masalah koneksi database yang tidak konsisten.
Tujuan PDO adalah
menyediakan API yang ringan, jelas, dan nyaman
Menyatukan fitur-fitur umum pada berbagai pustaka RDBMS tanpa mengecualikan fitur-fitur yang lebih canggih.
Memberikan tingkat abstraksi/kompatibilitas opsional yang lebih tinggi melalui skrip PHP.
Fitur PDO:
Kinerja. PDO belajar dari awal tentang keberhasilan dan kegagalan penskalaan database yang ada. Karena kode PDO masih baru, kami memiliki kesempatan untuk mendesain ulang kinerja dari awal untuk memanfaatkan fitur-fitur terbaru PHP 5.
kemampuan. PDO dirancang untuk menyediakan fungsionalitas database umum sebagai landasan sekaligus menyediakan akses mudah ke fitur unik RDBMS.
Sederhana. PDO dirancang untuk memudahkan Anda bekerja dengan database. API tidak memaksa masuk ke dalam kode Anda dan memperjelas fungsi setiap pemanggilan fungsi.
Dapat diperluas saat runtime. Ekstensi PDO bersifat modular, memungkinkan Anda memuat driver untuk backend database Anda saat runtime tanpa harus mengkompilasi ulang atau menginstal ulang seluruh program PHP. Misalnya, ekstensi PDO_OCI akan menggantikan ekstensi PDO untuk mengimplementasikan API database Oracle. Ada juga driver untuk MySQL, PostgreSQL, ODBC, dan Firebird, dan masih banyak lagi yang sedang dikembangkan. [pemisah]
Instal PDO
Apa yang saya miliki di sini adalah ekstensi PDO untuk pengembangan di WINDOWS. Jika Anda ingin menginstal dan mengkonfigurasinya di Linux, silakan cari di tempat lain.
Persyaratan versi: php5.1 dan versi yang lebih baru sudah termasuk dalam paket; php5.0.x perlu diunduh dari pecl.php.net dan ditempatkan di perpustakaan ekstensi Anda, yang merupakan folder ext dari folder tempat PHP berada ;Manual mengatakan bahwa versi sebelum 5.0 tidak dapat menjalankan ekstensi PDO. Konfigurasi:
Ubah file konfigurasi php.ini Anda agar mendukung pdo (Jika Anda tidak memahami php.ini, cari tahu terlebih dahulu. Anda perlu mengubah php.ini yang ditampilkan saat memanggil fungsi phpinfo() Anda.) Ubah extension= php_pdo Hapus titik koma di depan .dll. Titik koma adalah simbol komentar file konfigurasi php. ada lagi
;ekstensi=php_pdo.dll
;ekstensi=php_pdo_firebird.dll
;ekstensi=php_pdo_informix.dll
;ekstensi=php_pdo_mssql.dll
;ekstensi=php_pdo_mysql.dll
;ekstensi=php_pdo_oci.dll
;ekstensi=php_pdo_oci8.dll
;ekstensi=php_pdo_odbc.dll
;ekstensi=php_pdo_pgsql.dll
;ekstensi=php_pdo_sqlite.dll
Basis data yang sesuai dengan setiap ekstensi adalah:
Nama driver Basis data yang didukung
PDO_DBLIB FreeTDS/Microsoft SQL Server/Sybase
PDO_FIREBIRD Burung Api/Interbase 6
PDO_INFORMIX Server Dinamis IBM Informix
PDO_MYSQL MySQL 3.x/4.x
Antarmuka Panggilan Oracle PDO_OCI
PDO_ODBC ODBC v3 (IBM DB2, unixODBC dan win32 ODBC)
PDO_PGSQL PostgreSQL
PDO_SQLITE SQLite 3 dan SQLite 2
Database mana yang ingin Anda gunakan, hapus saja simbol komentar ";" sebelum ekstensi yang sesuai.
Menggunakan PDO
Saya berasumsi di sini Anda telah menginstal mysql. Jika belum, silakan cari cara untuk menginstalnya terlebih dahulu. Milik saya adalah mysql5.0.22, dan orang lain yang menggunakan MySQL 4.0.26 juga dapat menggunakannya.
Koneksi basis data:
Kami menggunakan contoh berikut untuk menganalisis database koneksi PDO,
<?php
$dbms='mysql'; //Oracle tipe database menggunakan ODI. Untuk pengembang, menggunakan database yang berbeda, selama Anda mengubahnya, Anda tidak perlu mengingat begitu banyak fungsi.
$host='localhost'; //Nama host basis data
$dbName='tes'; //Database digunakan
$user='root'; //Nama pengguna koneksi database
$pass=''; //Kata sandi yang sesuai
$dsn="$dbms:host=$host;namadb=$namadb";
mencoba {
$dbh = new PDO($dsn, $user, $pass); //Menginisialisasi objek PDO berarti membuat objek koneksi database $dbh
echo "Koneksi berhasil<br/>";
/*Anda juga dapat melakukan operasi pencarian
foreach ($dbh->query('Pilih * dari FOO') sebagai $baris) {
print_r($row); //Anda dapat menggunakan echo($GLOBAL);
}
*/
$dbh = nol;
} tangkapan (PDOException $e) {
die ("Kesalahan!: " .$e->getMessage() . "<br/>");
}
//Secara default, ini bukan koneksi yang panjang. Jika Anda memerlukan koneksi yang panjang ke database, Anda perlu menambahkan parameter di akhir: array(PDO::ATTR_PERSISTENT => true).
$db = PDO baru($dsn, $pengguna, $pass, array(PDO::ATTR_PERSISTENT => benar));
?>
Permintaan basis data:
Kami telah melakukan kueri di atas, dan kami juga dapat menggunakan kueri berikut:
<?php
$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER); //Atur atribut
$rs = $db->query("Pilih * DARI foo");
$rs->setFetchMode(PDO::FETCH_ASSOC);
$result_arr = $rs->fetchAll();
print_r($hasil_arr);
?>
Karena metode setAttribute() digunakan di atas, kedua parameter dimasukkan untuk memaksa nama field menjadi huruf besar. Berikut ini daftar parameter PDO::setAttribute(): PDO::ATTR_CASE: Memaksa nama kolom dalam format, seperti yang dirinci di bawah (parameter kedua):
PDO::CASE_LOWER: Memaksa nama kolom menjadi huruf kecil.
PDO::CASE_NATURAL: Nama kolom sesuai bentuk aslinya
PDO::CASE_UPPER: Memaksa nama kolom menjadi huruf besar.
PDO::ATTR_ERRMODE: pesan kesalahan.
PDO::ERRMODE_SILENT: Tidak menampilkan informasi kesalahan, hanya kode kesalahan.
PDO::ERRMODE_WARNING: Menampilkan kesalahan peringatan.
PDO::ERRMODE_EXCEPTION: Melemparkan pengecualian.
PDO::ATTR_ORACLE_NULLS (berlaku tidak hanya untuk ORACLE, tetapi juga untuk database lain): ) menentukan nilai yang sesuai di php untuk nilai NULL yang dikembalikan oleh database.
PDO::NULL_NATURAL: tidak berubah.
PDO::NULL_EMPTY_STRING: String kosong diubah menjadi NULL.
PDO::NULL_TO_STRING: NULL diubah menjadi string kosong.
PDO::ATTR_STRINGIFY_FETCHES: Mengonversi nilai numerik menjadi string saat mengambil. Membutuhkan bool.
PDO::ATTR_STATEMENT_CLASS: Setel kelas pernyataan yang disediakan pengguna yang berasal dari PDOStatement. Tidak dapat digunakan dengan instance PDO yang persisten. Memerlukan array(nama kelas string, array(args_konstruktor campuran)).
PDO::ATTR_AUTOCOMMIT (tersedia di OCI, Firebird dan MySQL): Apakah akan melakukan autocommit setiap pernyataan.
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY (tersedia di MySQL): Gunakan kueri buffer.
$rs->setFetchMode(PDO::FETCH_ASSOC); dalam contohnya adalah PDOStatement::setFetchMode(), sebuah deklarasi tipe kembalian.
Ada sebagai berikut:
PDO::FETCH_ASSOC -- bentuk array asosiatif
PDO::FETCH_NUM -- Bentuk array indeks numerik
PDO::FETCH_BOTH -- Keduanya tersedia dalam bentuk array, yang merupakan default
PDO::FETCH_OBJ -- berbentuk objek, mirip dengan mysql_fetch_object() sebelumnya
Untuk deklarasi tipe pengembalian lainnya (PDOStatement::nama metode), lihat manual.
menyisipkan, memperbarui, menghapus data,
$db->exec("Delete FROM `xxxx_menu` di mana mid=43");
Ringkaslah operasi di atas secara singkat:
Operasi kueri utamanya adalah PDO::query(), PDO::exec(), PDO::prepare().
PDO::query() terutama digunakan untuk operasi yang mengembalikan hasil yang direkam, khususnya operasi Select.
PDO::exec() terutama untuk operasi yang tidak mengembalikan kumpulan hasil, seperti Sisipkan, Perbarui, Hapus, dan operasi lainnya.
PDO::prepare() pada dasarnya adalah operasi prapemrosesan. Anda perlu menggunakan $rs->execute() untuk mengeksekusi pernyataan SQL dalam prapemrosesan. Metode ini dapat mengikat parameter dan cukup kuat . Semua Orang Anda dapat merujuk ke manual dan dokumentasi lainnya.
Operasi utama untuk mendapatkan kumpulan hasil adalah: PDOStatement::fetchColumn(), PDOStatement::fetch(), PDOStatement::fetchALL().
PDOStatement::fetchColumn() adalah bidang rekaman pertama yang ditentukan dalam hasil pengambilan.
PDOStatement::fetch() digunakan untuk mendapatkan catatan.
PDOStatement::fetchAll() adalah untuk menyatukan semua kumpulan data menjadi satu. Untuk mendapatkan hasilnya, Anda dapat mengatur jenis kumpulan hasil yang diperlukan melalui PDOStatement::setFetchMode.
Ada juga dua operasi di sekitarnya, satu adalah PDO::lastInsertId() dan PDOStatement::rowCount(). PDO::lastInsertId() mengembalikan operasi penyisipan terakhir, dan jenis kolom kunci utama adalah ID kenaikan otomatis terakhir.
PDOStatement::rowCount() terutama digunakan untuk kumpulan hasil yang dipengaruhi oleh operasi Hapus, Sisipkan, dan Perbarui PDO::query() dan PDO::prepare(), dan tidak valid untuk metode PDO::exec() dan Pilih operasi.