pdo dalam php ialah perpustakaan kelas lanjutan yang boleh menentukan antara muka yang ringan dan konsisten untuk php Penggunaannya adalah seperti berikut: 1. Buat fail sampel php 2. Melalui "try{$link = new PDO (.);}catch(PDOException $e){...}" untuk mencipta objek pdo; 3. Jalankan pertanyaan melalui "$link->query('select *from user');" dan kembalikan hasilnya Hanya tetapkan objek.
Persekitaran sistem pengendalian ini: Sistem Linux5.18.14, komputer Dell G3.
1. Konsep asas
1. Pustaka kelas sambungan PDO mentakrifkan antara muka yang ringan dan konsisten untuk PHP, yang menyediakan lapisan abstraksi capaian data supaya tidak kira apa pangkalan data yang digunakan, pertanyaan dan data boleh diperoleh melalui fungsi yang konsisten.
PDO ialah "lapisan abstraksi akses pangkalan data" yang menyatukan antara muka akses pelbagai pangkalan data.
2. Operasi pada mana-mana pangkalan data tidak dilakukan menggunakan sambungan PDO itu sendiri, dan mesti diakses menggunakan pemacu PDO khusus untuk pelayan pangkalan data yang berbeza. Seperti: MYSQL (PDO_MYSQL). Senarai bahagian PDO boleh dilihat dalam fungsi phpinfo().
2. Pemasangan PDO
1: Apabila memasang PHP, tambahkan bendera berikut pada arahan konfigurasi:
–dengan-pdo-. mysql=/usr/local/mysql ///usr/local/mysql ialah direktori pemasangan mysql
2. Windows:
Cari fail php.ini dalam C:windows
(1) Buka: extension=php_pdo.dll
(2) Buka: extension=php_pdo_mysql.dll
3 🎜>1. Sambung ke pangkalan data
2 Cipta objek PDO: (1)$link = PDO baharu(DSN, nama pengguna, kata laluan, atribut pemandu);<.> 1) DSN: Nama sumber data, digunakan untuk menentukan pemacu yang mesti digunakan dan pangkalan data yang akan digunakan. Format DSN mysql: 'mysql:host=localhost;dbname=lamp30'
2) Anda boleh meletakkan DSN dalam fail, seperti: 'uri:file:///usr/local/dsn. txt'
3) Gunakan pernyataan try...catch apabila mencipta objek, kerana apabila ralat berlaku semasa mengisytiharkan contoh PDO, pengecualian akan dilemparkan secara automatik. Contohnya:
Kod adalah seperti berikut
3 Atribut pemacu(1) Anda boleh membentuk tatasusunan dengan beberapa pilihan yang diperlukan (nama atribut sebagai elemen. kunci, nilai atribut sebagai nilai elemen) diserahkan kepada parameter keempat pembina. Jika atribut pemacu tidak ditakrifkan dalam pembina, anda kemudian boleh menggunakan fungsi setattribute() kelas PDO untuk mentakrifkan setiap atribut.try{ $link = new PDO(‘mysql:host=localhost;dbname=lamp30’,’root’,’111111’); }catch(PDOException $e){ echo $e->getMessage(); exit(‘连接数据库错误.’); }
(2) Terdapat penjelasan bahasa Cina tentang sifat-sifat ini di halaman P501 buku itu.
3. Tetapkan set aksara: $link->query('set names UTF8')
5 )$link->exec(): Laksanakan penambahan, pemadaman dan pengubahsuaian, dan kembalikan bilangan baris yang terjejas Jika pelaksanaan gagal, ia mengembalikan palsu atau 0. (2)$link->query(): Jalankan pertanyaan dan kembalikan objek set hasil PDOStatement.6. Hasil pertanyaan
1 Bukan pertanyaan: (1) Gunakan secara langsung pulangan $link->exec() untuk mempengaruhi Nombor baris(2)$link->lastInsertId() mengembalikan nilai nombor AUTO_INCREMENT yang dijana oleh arahan INSERT yang terakhir
2 Lihat Prapemprosesan7. Prapemprosesan
1 Langkah 2: Hantar pernyataan SQLKod adalah seperti berikutParameter bindParam() mempunyai yang berikut. 7 jenis: anda tidak perlu menulisnya
PDO::PARAM_INT
PDO::PARAM_STR
$stmt = $link->prepare(‘select * from user where id=:id’); $stmt->bindparam(‘:id’, $id, PDO::PARAM_INT); $id = 2; $stmt->execute();
(1)fetch() kaedah
Terdapat enam parameter untuk fetch(): lihat manual .
$stmt = $link->query(‘select * from user’);
Kaedah (2)fetchall()
$pdoStat ->bindColumn(1, $id); //第一个参数可以是从1开始的索引值 $pdoStat ->bindColumn(‘name’, $name); //也可以是列名 $pdoStat ->bindColumn(‘pass’, $pass); while($row = $stmt ->fetch(PDO::FETCH_BOUND)){ echo $id.’ ’; echo $name.’ ’; echo $pass.’ ’; }
Parameter Fetchall() adalah sama seperti fetch().
8. Pemprosesan transaksi$result = $stmt ->fetchall(); foreach($result as $row){ echo $row[‘id’].’ ’; echo $row[‘name’].’ ’; echo $row[‘pass’].’ ’; }
4. Hidupkan komit automatik
Contohnya: Kodnya adalah seperti berikut 9. Objek PDO Kaedah ahli dalam1. $link->getattribute (nama atribut): Dapatkan atribut pemacu.
2. $link->setattribute (nama atribut, nilai atribut): Tetapkan atribut pemacu.
$link = new PDO(‘mysql:host=localhost;dbname=lamp30’); //1 $link->setattribute(PDO::ATTR_AUTOCOMMIT, false); //2 $link->begintransaction(); $result = $link->exec(‘insert into user(name,paa) values(‘wsy’,’111’)’); //3 if($result){ $link->commit(); }else{ $link->rollback(); } //4 $link->setattribute(PDO::ATTR_AUTOCOMMIT, true);
2) Terdapat tiga cara untuk memaparkan ralat: statik, mesej AMARAN, pengecualian
3. 1) Jika fungsi setattribute menetapkan mod paparan ralat kepada statik, tiada apa yang akan dipaparkan apabila ralat berlaku Fungsi ini mesti dipanggil untuk melihat nombor ralat. 4. $link->errorinfo(): Dapatkan maklumat ralat (tatasusunan). 1) Jika fungsi setattribute menetapkan mod paparan ralat kepada statik, tiada apa yang akan dipaparkan apabila ralat berlaku Fungsi ini mesti dipanggil untuk melihat mesej ralat. 5. $link->lastinsertid(): Dapatkan nilai kunci utama data terakhir yang dimasukkan ke dalam jadual (jika beberapa keping data dimasukkan pada masa yang sama, kembalikan ID yang pertama dimasukkan baris).6、$link->prepare():发送准备的SQL语句,返回PDOStatement对象。
7、$link->begintransaction():打开事务。
8、$link->commit():提交一个事务,执行一个SQL。
9、$link->rollback():回滚一个事务。
十、错误模式
1、静态模式:
代码如下
$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT)
(1) 默认模式,在错误发生时不进行任何操作,PDO将只设置错误代码。
(2) 查看错误可以调用errorCode()和errorInfo(),PDO和PDOStatement类都有这两个方法。
2、警告模式:
代码如下
$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING)
(1)此模式在设置错误代码以外,PDO还将发出一条PHP传统的E_WARNING消息。
(2)这是mysql和mysqli显示错的方式。
3、异常模式:
代码如下
$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)
(1) 此模式在设置错误代码以外,PDO还将抛出一个PDOException,并设置其属性,以反映错误代码和错误信息。
(2) 如果异常导致脚本终止,则事务将自动回滚。
(3) PDO推荐使用此模式。
十一、持久连接
代码如下
$link->setAttribute(PDO::ATTR_PERSISTENT, true);
持久连接即当脚本执行结束时不会自动断开连接,而且用$link->close()不能关闭连接。
Atas ialah kandungan terperinci Bagaimana untuk menggunakan pdo dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!