ส่วนขยาย PHP Data Objects (PDO) กำหนดอินเทอร์เฟซน้ำหนักเบาและสม่ำเสมอสำหรับ PHP ในการเข้าถึงฐานข้อมูล
PDO จัดให้มีชั้นนามธรรมในการเข้าถึงข้อมูล ซึ่งหมายความว่าไม่ว่าจะใช้ฐานข้อมูลใด ฟังก์ชัน (วิธีการ) เดียวกันก็สามารถใช้เพื่อสืบค้นและรับข้อมูลได้
PDO เปิดตัวด้วย PHP5.1 และยังสามารถใช้ในส่วนขยาย PECL ของ PHP5.0 ได้ แต่ไม่สามารถทำงานบน PHP เวอร์ชันก่อนหน้าได้
คุณสามารถตรวจสอบว่าส่วนขยาย PDO ได้รับการติดตั้งผ่านฟังก์ชัน phpinfo() ของ PHP หรือไม่
บน Unix หรือ Linux คุณต้องเพิ่มส่วนขยายต่อไปนี้:
ส่วนขยาย=pdo.so
PDO และไดรเวอร์หลักทั้งหมดมาพร้อมกับ PHP เป็นส่วนขยายที่ใช้ร่วมกัน หากต้องการเปิดใช้งาน เพียงแก้ไขไฟล์ php.ini และเพิ่มส่วนขยายต่อไปนี้:
ส่วนขยาย=php_pdo.dllนอกจากนี้ยังมีส่วนขยายฐานข้อมูลต่างๆ ดังต่อไปนี้:
;ส่วนขยาย=php_pdo_firebird.dll;ส่วนขยาย=php_pdo_informix.dll;ส่วนขยาย=php_pdo_mssql.dll;ส่วนขยาย=php_pdo_mysql.dll;ส่วนขยาย n=php_pdo_oci.dll;ส่วนขยาย=php_pdo_oci8.dll;ส่วนขยาย=php_pdo_odbc.dll;ส่วนขยาย=php_pdo_pgsql.dll;ส่วนขยาย=php_pdo_sqlite.dll
หลังจากตั้งค่าเหล่านี้แล้ว เราจำเป็นต้องรีสตาร์ท PHP หรือเว็บเซิร์ฟเวอร์
ต่อไป มาดูตัวอย่างที่เฉพาะเจาะจงต่อไปนี้เป็นตัวอย่างของการใช้ PDO เพื่อเชื่อมต่อกับฐานข้อมูล MySql:
<?php$dbms='mysql'; //ประเภทฐานข้อมูล $host='localhost'; //ชื่อโฮสต์ฐานข้อมูล $dbName='test'; //ฐานข้อมูลที่ใช้ $user='root'; $pass=''; // รหัสผ่านที่สอดคล้องกัน $dsn="$dbms:host=$host;dbname=$dbName"; ลอง { $dbh = new PDO($dsn, $user, $pass); //เตรียมใช้งานวัตถุ PDO echo "การเชื่อมต่อสำเร็จ<br/>"; /*คุณยังสามารถดำเนินการค้นหา foreach ($dbh->query('SELECT * from FOO') as $row) { print_r($row) ; //คุณสามารถใช้ echo($GLOBAL); เพื่อดูค่าเหล่านี้} */ $dbh = null;} catch (PDOException $e) { die ("Error!: " . $e->getMessage() . "<br/>");}//ตามค่าเริ่มต้น นี่ไม่ใช่การเชื่อมต่อที่ยาวนาน หากคุณต้องการเชื่อมต่อกับฐานข้อมูลเป็นเวลานาน คุณจะต้องเพิ่มพารามิเตอร์ที่ส่วนท้าย: array(PDO::ATTR_PERSISTENT => จริง) มันจะกลายเป็นดังนี้: $db = new PDO( $dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));?>
มันง่ายมาก ต่อไปเรามาดูคำแนะนำเฉพาะของ PHP PDO กันดีกว่า:
ค่าคงที่ที่กำหนดไว้ล่วงหน้า
การจัดการการเชื่อมต่อการเชื่อมต่อ PHP PDO
ธุรกรรม PHP PDO และการดำเนินการอัตโนมัติ
PHP PDO เตรียมคำสั่งและขั้นตอนการจัดเก็บ
ข้อผิดพลาด PHP PDO และการจัดการข้อผิดพลาด
PHP PDO วัตถุขนาดใหญ่ (LOB)
คลาส PDO:
PDO::beginTransaction - เริ่มการทำธุรกรรม
PDO :: กระทำ - กระทำธุรกรรม
PDO::__construct — สร้างอินสแตนซ์ PDO ที่แสดงถึงการเชื่อมต่อฐานข้อมูล
PDO::errorCode - รับ SQLSTATE ที่เชื่อมโยงกับการดำเนินการล่าสุดของตัวจัดการฐานข้อมูล
PDO::errorInfo — ส่งคืนข้อมูลข้อผิดพลาดของการดำเนินการฐานข้อมูลครั้งล่าสุด
PDO::exec — ดำเนินการคำสั่ง SQL และส่งคืนจำนวนแถวที่ได้รับผลกระทบ
PDO::getAttribute - ดึงข้อมูลคุณลักษณะของการเชื่อมต่อฐานข้อมูล
PDO::getAvailableDrivers - ส่งคืนอาร์เรย์ของไดรเวอร์ที่มีอยู่
PDO::inTransaction — ตรวจสอบว่าอยู่ในธุรกรรมหรือไม่
PDO::lastInsertId - ส่งกลับ ID หรือค่าลำดับของแถวที่แทรกล่าสุด
PDO::prepare — เตรียมคำสั่ง SQL ที่จะดำเนินการและส่งกลับวัตถุ PDOStatement
PDO::query — ดำเนินการคำสั่ง SQL และส่งคืนอ็อบเจ็กต์ PDOStatement ซึ่งสามารถเข้าใจได้ว่าเป็นชุดผลลัพธ์
PDO::quote — เพิ่มเครื่องหมายคำพูดให้กับสตริงในคำสั่ง SQL
PDO::rollBack - ย้อนกลับธุรกรรม
PDO::setAttribute — ตั้งค่าแอตทริบิวต์
คลาสคำสั่ง PDO:
PDOStatement::bindColumn - ผูกคอลัมน์กับตัวแปร PHP
PDOStatement::bindParam — ผูกพารามิเตอร์กับชื่อตัวแปรที่ระบุ
PDOStatement::bindValue - ผูกค่าเข้ากับพารามิเตอร์
PDOStatement::closeCursor — ปิดเคอร์เซอร์เพื่อให้สามารถดำเนินการคำสั่งได้อีกครั้ง
PDOStatement::columnCount — ส่งกลับจำนวนคอลัมน์ในชุดผลลัพธ์
PDOStatement::debugDumpParams — พิมพ์คำสั่งการประมวลผลล่วงหน้าของ SQL
PDOStatement::errorCode - รับ SQLSTATE ที่เชื่อมโยงกับการดำเนินการจัดการคำสั่งล่าสุด
PDOStatement::errorInfo — รับข้อมูลข้อผิดพลาดเพิ่มเติมที่เกี่ยวข้องกับการดำเนินการจัดการคำสั่งล่าสุด
PDOStatement::execute — รันคำสั่งที่เตรียมไว้
PDOStatement::fetch — รับแถวถัดไปจากชุดผลลัพธ์
PDOStatement::fetchAll - ส่งคืนอาร์เรย์ที่มีแถวทั้งหมดในชุดผลลัพธ์
PDOStatement::fetchColumn - ส่งคืนคอลัมน์เดียวจากแถวถัดไปในชุดผลลัพธ์
PDOStatement::fetchObject - รับแถวถัดไปและส่งกลับเป็นวัตถุ
PDOStatement::getAttribute - ดึงข้อมูลแอตทริบิวต์คำสั่ง
PDOStatement::getColumnMeta — ส่งคืนข้อมูลเมตาสำหรับคอลัมน์ในชุดผลลัพธ์
PDOStatement::nextRowset - เลื่อนไปยังชุดแถวถัดไปในตัวจัดการคำสั่งแบบหลายแถว
PDOStatement::rowCount — ส่งกลับจำนวนแถวที่ได้รับผลกระทบจากคำสั่ง SQL ก่อนหน้า
PDOStatement::setAttribute — ตั้งค่าแอตทริบิวต์คำสั่ง
PDOStatement::setFetchMode — ตั้งค่าโหมดการดึงข้อมูลเริ่มต้นสำหรับคำสั่ง