1. 程式人生 > >PDO 連接與連接管理

PDO 連接與連接管理

font user rom ror 結束 相同 管理 bsp hand

連接是通過創建 PDO 基類的實例而建立的。不管使用哪種驅動程序,都是用 PDO 類名。

構造函數接收用於指定數據庫源(所謂的 DSN)以及可能還包括用戶名和密碼(如果有的話)的參數。

連接到 MySQL

<?php
$dbh = new PDO(mysql:host=localhost;dbname=test, $user, $pass);
?>

如果有任何連接錯誤,將拋出一個 PDOException 異常對象。如果想處理錯誤狀態,可以捕獲異常,

或者選擇留給通過 set_exception_handler()設置的應用程序全局異常處理程序。

處理連接錯誤

<?php
try { $dbh = new PDO(mysql:host=localhost;dbname=test, $user, $pass); foreach($dbh->query(SELECT * from FOO) as $row) { print_r($row); } $dbh = null; } catch (PDOException $e) { print "Error!: " . $e->getMessage() . "<br/>"; die(); } ?>

連接數據成功後,返回一個 PDO 類的實例給腳本,

此連接在 PDO 對象的生存周期中保持活動。

要想關閉連接,需要銷毀對象以確保所有剩余到它的引用都被刪除,可以賦一個 NULL 值給對象變量。

如果不明確地這麽做,PHP 在腳本結束時會自動關閉連接。

關閉一個連接

<?php
$dbh = new PDO(mysql:host=localhost;dbname=test, $user, $pass);
// 在此使用連接


// 現在運行完成,在此關閉連接
$dbh = null;
?>

很多 web 應用程序通過使用到數據庫服務的持久連接獲得好處。持久連接在腳本結束後不會被關閉,且被緩存,

當另一個使用相同憑證的腳本連接請求時被重用。持久連接緩存可以避免每次腳本需要與數據庫回話時建立一個新連接的開銷,從而讓 web 應用程序更快。

持久化連接

<?php
$dbh = new PDO(mysql:host=localhost;dbname=test, $user, $pass, array(
    PDO::ATTR_PERSISTENT => true
));
?>

如果想使用持久連接,必須在傳遞給 PDO 構造函數的驅動選項數組中設置 PDO::ATTR_PERSISTENT

如果是在對象初始化之後用 PDO::setAttribute() 設置此屬性,則驅動程序將不會使用持久連接。

PDO 連接與連接管理