Latest web development tutorials

PHP PDO連接連接管理

PHP PDO 參考手冊 PHP PDO參考手冊

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

連接到MySQL

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

注意:如果有任何連接錯誤,將拋出一個PDOException異常對象。

處理連接錯誤

<?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() 設置此屬性,則驅動程序將不會使用持久連接。


PHP PDO 參考手冊 PHP PDO參考手冊