PHP的PDO模式資料操作

2021-08-04 15:53:54 字數 2390 閱讀 2363

pdo的全稱為(php data object)

php(資料應用物件)可以看做:

1.代表php和資料庫服務之間的乙個連線;

2.可以視作針對不同問題的解決方案;

3.是乙個標準的api(應用程式程式設計介面);

4.一套解決問題的函式庫

pdo驅動:針對某種不同功能的函式庫(支援的資料庫);

pdo是乙個「資料庫訪問抽象層」,作用是統一各種資料庫的訪問介面,與mysql和mysqli的函式庫相比,pdo讓跨資料庫的使用更具有親和力;與adodb和mdb2相比,pdo更高效。

pdo中包含三個預定義的類,它們分別是 pdo、pdostatement 和 pdoexception。

pdo提供了三種不同的錯誤處理模式,可以滿足不同風格的應用開發。

• pdo::errmode_silent 

此為預設模式。 pdo 將只簡單地設定錯誤碼,可使用 pdo::errorcode() 和 pdo::errorinfo() 方法來檢查語句和資料庫物件。如果錯誤是由於對語句物件的呼叫而產生的,那麼可以呼叫那個物件的 pdostatement::errorcode() 或 pdostatement::errorinfo() 方法。如果錯誤是由於呼叫資料庫物件而產生的,那麼可以在資料庫物件上呼叫上述兩個方法。 

• pdo::errmode_warning 

除設定錯誤碼之外,pdo 還將發出一條傳統的 e_warning 資訊。如果只是想看看發生了什麼問題且不中斷應用程式的流程,那麼此設定在除錯/測試期間非常有用。 

• pdo::errmode_exception 

除設定錯誤碼之外,pdo 還將丟擲乙個 pdoexception 異常類並設定它的屬性來反射錯誤碼和錯誤資訊。此設定在除錯期間也非常有用,因為它會有效地放大指令碼中產生錯誤的點,從而可以非常快速地指出**中有問題的潛在區域(記住:如果異常導致指令碼終止,則事務被自動回滾)。 

pdo 使用 sql-92 sqlstate 來規範錯誤碼字串;不同 pdo 驅動程式負責將它們的本地**對映為適當的 sqlstate **。pdo::errorcode() 方法返回乙個單獨的 sqlstate 碼。如果需要更多此錯誤的細節資訊,pdo 還提供了乙個 pdo::errorinfo() 方法來返回乙個包含 sqlstate 碼、特定驅動錯誤碼以及此驅動的錯誤字串的陣列。

舉例:這是我寫的乙個pdo函式封裝

<?php

/** * 我直接針對pdo的封裝類

* user: seven

* date: 2017/7/26

* time: 9:43

*/class mypdo

else

$dsn = ":dbname=;host=;port=;charset=";

$user = $arr['user'];

$password = $arr['password'];

$this->pdo = new pdo($dsn,$user,$password);

}/**

* 銷毀自己的操作類時,同時銷毀被建立了的pdo物件

*/function __destruct()

/*** 執行dml操作語句

* @param $sql 需要執行的sql語句

* @return int 返回執行語句後受到影響的行數

*/public function pdoexec($sql)

/*** 返回結果為陣列結構

* @param $sql 需要執行的sql語句

* @param int $var 執行query函式的引數(可選值:pdo::fetch_both(預設),pdo::fetch_num,pdo::fetch_assoc)

* @return array 將結果轉換為陣列並返回,如果沒有查詢結果則返回乙個空陣列

*/public function arraybypdoquery($sql, $var=pdo::fetch_both)

/*** 獲取查詢結果並封裝為乙個物件陣列

* @param $sql 需要執行的sql語句

* @param string $class_name 建立類的名稱

* @param array $ctor_args 此陣列的元素被傳遞給對應類的建構函式

* @return array 返回組裝好的物件陣列

*/public function objectbypdoquery($sql, $class_name='stdclass', $ctor_args=array())

}return $arr;

}

再插乙個資料庫檔案就可以直接用了

PHP的PDO基本操作

php 5 及以上版本建議使用以下方式連線 mysql mysqli extension i 意為 improved pdo php data objects pdo 應用在 12 種不同資料庫中,mysqli 只針對 mysql 資料庫。二者都支援預處理語句,可防止sql注入。示例 servern...

使用PHP的PDO類操作MySQL

mysql new pdo mysql host localhost sort 3306 dbname foo user,psd 值得一提的是,如果連線資料庫失敗,會丟擲乙個pdoexception異常,這樣我們就可以直接用try catch 來處理異常,不僅如此,還可以通過pdo setattri...

PHP中PDO的基本操作二

在介紹完pdo的基本操作之後,我們利用封裝連線和讀寫操作,實現對資料庫的讀寫操作。下面是封裝方法 function.php pdo物件初始化 function init 設定字符集 res pdo exec set names utf8 echo res if res false 返回pdo物件 r...