目前而言,實現「資料庫抽象層」任重道遠,使用PDO這樣的「資料庫存取抽象層」是個不錯的選擇。
PDO中包含三個預先定義的類別
PDO中包含三個預先定義的類,它們分別是 PDO、PDOStatement 和 PDOException。
一、PDO
PDO->beginTransaction() — 標示回溯起始點
PDO->commit() — 標示回滾結束點,並執行SQL
PDO->__construct() — 建立一個PDO連結資料庫的實例
PDO->errorCode() — 取得錯誤碼
PDO->errorInfo() — 取得錯誤的資訊
PDO->exec() — 處理一則SQL語句,並傳回所影響的條目數
PDO->getAttribute( ) — 取得一個「資料庫連線物件」的屬性
PDO->getAvailableDrivers() — 取得有效的PDO磁碟機名稱
PDO->lastInsertId() — 取得寫入的最後一條資料的主鍵值
PDO->prepare( ) — 產生一個「查詢物件」
PDO->query() — 處理一條SQL語句,並傳回一個「PDOStatement」
PDO->quote() — 為某個SQL中的字串加上引號
PDO->rollBack () — 執行回滾
PDO->setAttribute() — 為一個「資料庫連接物件」設定屬性
二、PDOStatement
PDOStatement->bindColumn() — Bind a column to a PHP variable
P) =d 即使() — Binds a parameter to the specified variable name
PDOStatement->bindValue() — Binds a value to a parameter
PDOStatement->closeCursor() — Closes the cursor, enabling the statement to be executedgain. () — Returns the number of columns in the result set
PDOStatement->errorCode() — Fetch the SQLSTATE associated with the last operation on the statement handle
PDOStatement->error Info) — Fetch extend on informated information the the statement handle
PDOStatement->execute() — Executes a prepared statement
PDOStatement->fetch() — Fetches the next row from a result set
PDOStatement->fetchAll() — Returns. PDOStatement->fetchColumn() — Returns a single column from the next row of a result set
PDOStatement->fetchObject() — Fetches the next row and returns it as an object.
PDOStatement-> Returns it as an object.
PDOStatement-> Reevebute) —Attribute(statePDObment-> statePDOState)
PDOStatement->getColumnMeta() — Returns metadata for a column in a result set
PDOStatement->nextRowset() — Advances to the next rowset in a multi-rowset statement handle
PDOStatement. affected by the last SQL statement
PDOStatement->setAttribute() — Set a statement attribute
PDOStatement->setFetchMode() — Set the default fetch mode for this statement
PDO->commit() — 標示回溯結束點,並執行回復>__construct() — 建立一個PDO連結資料庫的實例
PDO->errorCode() — 取得錯誤碼
PDO->errorInfo() — 取得錯誤的資訊
PDO->exec() — 處理一則SQL語句,並傳回一則SQL語句,並傳回一條SQL語句,並傳回一條SQL語句,並傳回一條SQL語句,並傳回一條SQL語句,並傳回一條SQL語句,並傳回一條SQL語句,並傳回一條SQL所影響的條目數
PDO->getAttribute() — 取得一個「資料庫連線物件」的屬性
PDO->getAvailableDrivers() — 取得有效的PDO磁碟機名稱
PDO->lastInsertId() — 取得寫入的最後一條資料的主鍵值
PDO->prepare() — 產生一個「查詢物件」
PDO->query() — 處理一條SQL語句,並傳回一個「PDOStatement」
PDO->quote() — 為某個SQL中的字串新增引號
PDO->setAttribute() — 為一個「資料庫連線物件」設定屬性
詳解1) PDO中的資料庫連線
$dsn = 'mysql:dbname=ent;host=127.0.0.1 ′;
$password = '123456′;
try {
$dbh = new PDO($dsn, $user, $password, array(PDO::ATTR_PERSISTENT => true));
$dbh->query('set names utf8;');
foreach ($dbh->query('SELECT * from tpm_juese') as $row) {
print_r($row);
}
} catch (PDOException $ e) {
echo 'Connection failed: ' . $e->getMessage();
}
許多Web應用會因為使用了向資料庫的持久連接而得到最佳化。持久連接不會在腳本結束時關閉,
相反它會被緩存起來並在另一個腳本通過相同的標識請求一個連接時得以重新利用。
持久連線的快取可以讓你避免在腳本每次需要與資料庫對話時都要部署一個新的連線的資源消耗,讓你的網路應用程式更加快速。
上面實例中的array(PDO::ATTR_PERSISTENT => true)就是把連線類型設為持久連線。
詳解2) PDO中的事務
PDO->beginTransaction(),PDO->commit(),PDO->rollBack()這三個方法是在支援回溯功能時一起使用的。 PDO->beginTransaction()方法標示起始點,PDO->commit()方法標示回溯結束點,並執行SQL,PDO->rollBack()執行回溯。
try {
$dbh = new PDO('mysql:host=localhost;dbname=test', 'root', ”);
$dbh->query('set names utf8;');
$ dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->beginTransaction();
$dbh->exec(”INSERT INTO `test`.`table` (`name` `table,`(`name` `age `)VALUES ('mick', 22);”);
$dbh->exec(”INSERT INTO `test`.`table` (`name` ,`age`)VALUES ('lily', 29);” );
$dbh->exec(”INSERT INTO `test`.`table` (`name` ,`age`)VALUES ('susan', 21);”);
$dbh->commit();
} catch (Exception $e) {
$dbh->rollBack();
echo “Failed: ” . $e->getMessage();
}
?>
現在你已經透過PDO建立了連接,在部署
?>
現在你已經透過PDO建立了連接,在部署}
?>現在你已經透過PDO建立了連接,在部署
}?>
現在你已經透過PDO建立了連接,在部署查詢之前你必須搞清楚PDO是怎麼管理事務的。性(Atomicity, Consistency, Isolation and Durability,ACID)通俗一點講,一個事務中所有的工作在提交時,即使它是分階段執行的,也要保證安全地應用於資料庫,不被其他的連接幹擾。事務工作也可以在請求發生錯誤時輕鬆地自動取消。事務可以使你的腳本更快速同時可能更健壯(要實現這個優點你仍然需要正確的使用它們)。在被認為是「自動提交」的模式下。一個事務,你必須使用PDO->beginTransaction() 方法來建立一個。如果底層驅動不支援事務處理,一個PDOException就會被拋出(與你的例外處理設定無關,因為這總是一個嚴重的錯誤狀態)。在一個事物中,你可以使用 PDO->commit() 或 PDO->rollBack() 結束它,這取決於事務中程式碼運行是否成功。 🎜🎜當腳本結束時或一個連接要關閉時,如果你還有一個未處理完的事務,PDO將會自動將其回滾。這是對於腳本意外終止的情況來說是一個安全的方案——如果你沒有明確地提交事務,它將會假設發生了一些錯誤,為了你資料的安全,所以就執行回滾了。 🎜🎜二、PDOStatement🎜PDOStatement->bindColumn() — 將欄位綁定到PHP 變數
PDOStatement->bindParam() — 將參數綁定到指定的變數名稱
PDOStatement->bindValue() — 將值綁定到參數
PDOStatement -> closeCursor() — 關閉遊標,使語句能夠再次執行。
PDOStatement->columnCount() — 傳回結果集中的列數
PDOStatement->errorCode() — 取得關聯的SQLSTATE與語句柄上的最後一個運算
PDOStatement->errorInfo() — 取得與語句柄上的最後一個句柄上的最後一個句柄上的最後一個句柄上的最後一個句柄操作相關的擴充錯誤訊息
PDOStatement->execute() — 執行準備好的語句
PDOStatement->fetch( ) — 從結果集中取得下一行
PDOStatement->fetchAll() — 傳回包含結果集所有行的陣列PDOStatement->fetchColumn() — 從結果集中的下一行傳回單一欄位
PDOStatement->fetchObject() — 取得下一行並將其作為物件傳回。
PDOStatement->getAttribute() — 擷取語句屬性
PDOStatement->getColumnMeta() — 傳回結果中列的元資料set
PDOStatement->nextRowset() — 前進到多行集語句集柄中的一個下行下的一個行下碼PDOStatement ->rowCount() — 傳回受最後一個SQL 語句影響的行數
PDOStatement->setAttribute() — 設定語句屬性
PDOStatement->setFetchMode() — 設定此語句的預設取得模式
三、PDOException提供了三種不同的錯誤處理策略。
這是預設使用的模式。 PDO會在語句和資料庫物件上設定簡單的錯誤代號,你可以使用PDO->errorCode() 和PDO->errorInfo() 方法來檢查錯誤;如果錯誤是在對statement物件進行呼叫時導致的,你就可以在那個物件上使用PDOStatement->errorCode() 或PDOStatement->errorInfo() 方法來取得錯誤訊息。而如果錯誤是在對database物件呼叫時導致的,你就應該在這個資料庫物件上呼叫那兩個方法。
2. PDO::ERRMODE_WARNING作為設定錯誤代號的附加,PDO將發布一個傳統的E_WARNING資訊。這種設定在調試和調試時是很有用的,如果你只是想看看發生什麼問題而不想中斷程式的流程的話。
3. PDO::ERRMODE_EXCEPTION
作為設定錯誤代號的附件,PDO會拋出一個PDOException異常並設定它的屬性來反映錯誤代號和錯誤訊息。這中設定在調試時也是很有用的,因為他會有效的“放大” (炸毀)”腳本中的錯誤點,非常快速的指向一個你代碼中可能出錯的區域。(記住:如果異常導致腳本事務,處理會自動回滾。 ,也能夠更明確地檢查每個資料庫存取的回傳值。的代號對應到適當的SQLSTATE代號上。它傳回可以包含一個包含了SQLSTATE 代號,特定的資料庫驅動的錯誤代號和特定資料庫驅動的錯誤說明字串。 :ATTR_ERRMODE, PDO::ERRMODE_WARNING);
?> ;
屬性清單:
PDO::PARAM_BOOL
表示一個布林型別
PDO::PARAM_NULL
表示一個SQL中的NULL型別
PDO::PARAM_INT
表示一個SQL中的INTEGER型別
VARCHAR類型
PDO::PARAM_LOB
表示一個SQL中的large object類型
PDO::PARAM_STMT
表示一個SQL中的recordset類型,還沒有被支援
PDO::PARAM_INPUT_OUTPUTtheparaanterh; stored procedure. Youmust bitwise-OR this value with an explicit PDO::PARAM_* data type.
PDO::FETCH_LAZY::將每一行結果作為一個標鍵傳回
PDO::FETCH_LAZY::將每一行結果作為一個標物傳回
PDO::FETCH_LAZY::結果集,名稱相同的資料只傳回一個
PDO::FETCH_NAMED
僅傳回以鍵值為下標的查詢的結果集,名稱相同的資料以陣列形式傳回
PDO::FETCH_NUM
僅傳回以數字為下標的查詢的結果集
PDO::FETCH_BOTH
同時傳回以鍵值和數字作為下標的查詢的結果集
PDO::FETCH_OBJ
以物件的形式傳回結果集
PDO::FETCH_BOUND
將PDOStatement::bindParam(和PDOStatement::bindColumn()所綁定的值作為變數名稱賦值後傳回
PDO::FETCH_COLUMN
表示僅傳回結果集中的某一列
PDO::FETCH_CLASS
表示以類別的形式傳回結果集
PDO:: FETCH_INTO
表示將資料合併入一個存在的類別中進行回傳
PDO::FETCH_FUNC
PDO::FETCH_GROUP
PDO::FETCH_UNIQUE
PDO::FETCH_KEY_PAIR
以首個鍵值表,後面數字表下的形式傳回結果集
PDO::FETCH_CLASSTYPE
PDO::FETCH_SERIALIZE
表示將資料合併入一個存在的類別中並序列化回傳
PDO::FETCH_PROPS_LATE
Available since PHP 5.5.0時候,PDO會自動嘗試停止接受委託,開始執行
PDO::ATTR_PREFETCH
設定應用程式提前取得的資料大小,並非所有的資料庫哦度支援
PDO::ATTR_TIMEOUT
設定連接資料庫逾時的值
PDO:: ATTR_ERRMODE
設定Error處理的模式
PDO::ATTR_SERVER_VERSION
設定Error處理的模式
PDO::ATTR_SERVER_VERSION
設定為Error處理的模式
PDO::ATTR_SERVER_VERSION
只讀屬性,表示PDO連線的伺服器端資料庫版本
PDO::ATTR_CLIENT_VERSION
只讀特性,只讀屬性,表示PDO連接的伺服器的meta資訊
PDO::ATTR_CONNECTION_STATUS
PDO::ATTR_CASE
透過PDO::CASE_*中的內容對列的形式進行操作
PDO::ATTR_CURSOR_NAME
取得或設定指標的名稱
PDO::ATTR_CURSOR
設定指標的類型,PDO現在支援PDO::CURSOR_FWDONLY和PDO::CURSOR_FWDONLY
PDO::ATTR_DRIVER_NAME
AC.驅動的名稱
PDO::ATTR_DRIVER_NAME
AC為SQL的NULL
PDO::ATTR_PERSISTENT
取得一個存在的連線
PDO::ATTR_STATEMENT_CLASS
PDO::ATTR_FETCH_CATALOG_NAMES
在傳回的結果集中,使用自訂目錄名稱來取代名稱名稱。
PDO::ATTR_FETCH_TABLE_NAMES
在傳回的結果集中,使用自訂表格名稱來取代欄位名稱。
PDO::ATTR_STRINGIFY_FETCHES
PDO::ATTR_MAX_COLUMN_LEN
PDO::ATTR_DEFAULT_FETCH_MODE
Available since PHP 5.2.0
PDO_RsinEM
PDO::ERRMODE_SILENT
發生錯誤時不報告任何的錯誤訊息,是預設值
PDO::ERRMODE_WARNING
發生錯誤時發出一條php的E_WARNING的訊息
PDO::ERRMODE_EXCEPTION
發生錯誤時拋出一個PDOException
PDO::CASE_NATURALAL發生錯誤時拋出一個PDOException
PDO::CASE_NATURALALAL發生錯誤時拋出一個PDOException
PDO::CASE_NATURALALAL 您
強制列的名字小寫
PDO::CASE_UPPER
強制列的名字大寫
PDO::NULL_NATURAL
PDO::NULL_EMPTY_STRING
PDO::NULL_TO_STRING
PPDO::FETCH功能時有效
PDO::FETCH_ORI_PRIOR
取得結果集中的上一行數據,僅在有指標功能時有效
PDO::FETCH_ORI_FIRST
取得結果集中的第一行數據,僅在有指標功能時才有效
PDO:: FETCH_ORI_LAST
取得結果集中的最後一行數據,僅在有指針功能時有效
PDO::FETCH_ORI_ABS
獲取結果集中的某一行數據,僅在有指針功能時有效
PDO::FETCH_ORI_REL
獲取結果集中當前行後某行的數據,僅在有指標功能時有效
PDO::CURSOR_FWDONLY
建立一個只能向後的指標操作對象
PDO::CURSOR_SCROLL
建立一個指標操作對象,傳遞PDO::FETCH_ORI_*中的內容來控制結果集
PDO::ERR_NONE (string)
設定沒有錯誤時候的錯誤訊息
PDO::PARAM_EVT_ALLOC
Allocation event
PDO::PARAM_EVT_FREE
Deallocation event
PDO::PARAM_EVT_FREE
Deallocation event
PDO::PARAM_EVP::M事件在執行準備好的語句之前觸發。
PDO::PARAM_EVT_EXEC_POST
事件在執行準備的語句之後觸發。
PDO::PARAM_EVT_FETCH_PRE
事件在從 a 取得結果之前觸發結果集.
PDO::PARAM_EVT_FETCH_POST
事件從結果集中取得結果後觸發。
PDO::PARAM_EVT_NORMALIZE
綁定參數註冊期間觸發的事件,允許驅動程式標準化參數名稱。
更多PHP PDO函數庫詳解相關文章請關注PHP中文網!