-
- 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
- pdostatement->bindparam() — bind ifiedmeter
- pdostatement->bindvalue() — binds a value to a parameter
- pdostatement->closecursor() — closes the cursor, enabling the statement to be executed again.
- pdostatement-co. number of columns in the result set
- pdostatement->errorcode() — fetch the sqlstate associated with the last operation on the statement handle
- pdostatement->errorinfo() — fetch extended error information assocation the lastorinfo() — fetch extended error information assocation the statement handle
- pdostatement->execute() — executes a prepared statement
- pdostatement->fetch() — fetches the next row from a result set
- pdostatement->fetchall() — returnsan an the result set rows
- pdostatement->fetchcolumn() — returns a single column from the next row of a result set
- pdostatement->fetchobject() — fetches the next row and returns pdostatement->getattribute() — retrieve a statement attribute
- pdostatement->getcolumnmeta() — returns metadata for a column in a result set
- pdostatement->nextrowset() — adces in the next statement handle
- pdostatement->rowcount() — returns the number of rows affected by the last sql statement
- pdostatement->setattribute() — set a statement attribute
- pdostatement-> statement attribute
複製程式碼
詳解1) pdo中的資料庫連接
- $dsn = 'mysql:dbname=ent;host=127.0.0.1′;
- $user = 'root';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應用程式會因為使用了向資料庫的持久連接而得到最佳化。持久連線不會在腳本結束時關閉,
相反它會被緩存起來並在另一個腳本通過同樣的標識請求一個連接時得以重新利用。
持久連線的快取可以讓你避免在腳本每次需要與資料庫對話時都要部署一個新的連線的資源消耗,讓你的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` ,`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是怎樣管理事務的。主要的特性:原子性,一致性,獨立性和持久性(atomicity, consistency, isolation and durability,acid)通俗一點講,一個事務中所有的工作在提交時,即使它是分階段執行的,也要保證安全地應用於資料庫,不被其他的連線幹擾。
事務的典型運用就是透過把批量的改變「保存起來」然後立即執行。這樣就會有徹底提高更新效率的好處。換句話說,事務可以使你的腳本更快速同時可能更健壯(要實現這個優點你仍然需要正確的使用它們)。
不幸運的是,並不是每個資料庫都支援事務,因此pdo需要在建立連線時運行在被認為是「自動提交」的模式下。自動提交模式意味著你執行的每個查詢都有它自己隱含的事務處理,無論資料庫支援事務還是因資料庫不支援而不存在事務。如果你需要一個事務,你必須使用 pdo->begintransaction() 方法建立一個。如果底層驅動不支援事務處理,一個pdoexception就會被拋出(與你的異常處理設定無關,因為這總是一個嚴重的錯誤狀態)。在一個事物中,你可以使用 pdo->commit() 或 pdo->rollback() 結束它,這取決於事務中程式碼運行是否成功。
當腳本結束時或一個連線要關閉時,如果你還有一個未處理的事務,pdo將會自動將其回滾。這是對於腳本意外終止的情況來說是一個安全的方案——如果你沒有明確地提交事務,它將會假設發生了一些錯誤,為了你資料的安全,所以就執行回滾了。
二、pdostatement
// 修改預設的錯誤顯示等級$dbh->setattribute(pdo::attr_errmode, pdo::errmode_warning );?> 複製程式碼屬性列表:
pdo::param_bool
表示一個布林類型
pdo::param_null
表示一個sql中的null類型
pdo::param_int
表示一個sql中的integer類型
pdo::param_str
表示一個sql中的sql char,varchar類型
pdo::param_lob
表示一個sql中的large object類型
pdo::param_stmt
表示一個sql中的recordset類型,還沒有被支持
pdo::param_input_output
specifies that the parameter is an inout parameter for a stored procedure. you must bitwise-or this value with an explicit pdo::param_* data type.
pdo::fetch_lazy
將每一行結果作為一個物件返回
pdo::fetch_assoc
僅傳回以鍵值為下標的查詢的結果集,名稱相同的資料只會傳回一個
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.2.0
pdo::attr_autocommit
設定成true的時候,pdo會自動嘗試停止接受委託,開始執行
pdo::attr_prefetch
設定應用程式提前取得的資料大小,並非所有的資料庫哦度支持
pdo::attr_timeout
設定連接資料庫逾時的值
pdo::attr_errmode
設定error處理的模式
pdo::attr_server_version
只讀屬性,表示pdo連線的伺服器端資料庫版本
pdo::attr_client_version
只讀屬性,表示pdo連線的客戶端pdo驅動程式版本
pdo::attr_server_info
只讀屬性,表示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
傳回使用的pdo驅動程式的名稱
pdo::attr_oracle_nulls
將傳回的空字串轉換為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::attr_emulate_prepares
available since php 5.1.3.
pdo::errmode_silent
發生錯誤時不報告任何的錯誤訊息,是預設值
pdo::errmode_warning
發生錯誤時發出一條php的e_warning的訊息
pdo::errmode_exception
發生錯誤時拋出一個pdoexception
pdo::case_natural
回復列的預設顯示格式
pdo::case_lower
強制列的名字小寫
pdo::case_upper
強制列的名字大寫
pdo::null_natural
pdo::null_empty_string
pdo::null_to_string
pdo::fetch_ori_next
取得結果集中的下一行數據,僅在有指標功能時才有效
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_exec_pre
event triggered prior to execution of a prepared statement.
pdo::param_evt_exec_post
event triggered subsequent to execution of a prepared statement.
pdo::param_evt_fetch_pre
event triggered prior to fetching a result from a resultset.
pdo::param_evt_fetch_post
event triggered subsequent to fetching a result from a resultset.
pdo::param_evt_normalize
event triggered during bound parameter registration allowing the driver to normalize the parameter name.
|
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31