首頁 > 後端開發 > php教程 > php pdo函數庫用法詳解

php pdo函數庫用法詳解

WBOY
發布: 2016-07-25 08:54:37
原創
1043 人瀏覽過
  1. pdo->begintransaction() — 標示回滾起始點
  2. pdo->commit() — 標示回滾結束點,並執行sql
  3. pdo ->__construct() — 建立一個pdo連結資料庫的實例
  4. pdo->errorcode() — 取得錯誤碼
  5. pdo->errorinfo() — 取得錯誤的資訊
  6. pdo->exec() —處理一條sql語句,並傳回所影響的條目數
  7. pdo->getattribute() — 取得一個「資料庫連線物件」的屬性
  8. pdo->getavailabledrivers() — 取得有效的pdo磁碟機名稱
  9. pdo->lastinsertid() — 取得寫入的最後一條資料的主鍵值
  10. pdo->prepare() — 產生一個「查詢物件」
  11. pdo->query() — 處理一sql語句,並傳回一個「pdostatement」
  12. pdo->quote() — 為某個sql中的字串加上引號
  13. pdo->rollback() — 執行回滾
  14. pdo->setattribute() — 為一個「資料庫連線物件」設定屬性
複製程式碼

二、pdostatement

  1. pdostatement->bindcolumn() — bind a column to a php variable
  2. pdostatement->bindparam() — bind ifiedmeter
  3. pdostatement->bindvalue() — binds a value to a parameter
  4. pdostatement->closecursor() — closes the cursor, enabling the statement to be executed again.
  5. pdostatement-co. number of columns in the result set
  6. pdostatement->errorcode() — fetch the sqlstate associated with the last operation on the statement handle
  7. pdostatement->errorinfo() — fetch extended error information assocation the lastorinfo() — fetch extended error information assocation the statement handle
  8. pdostatement->execute() — executes a prepared statement
  9. pdostatement->fetch() — fetches the next row from a result set
  10. pdostatement->fetchall() — returnsan an the result set rows
  11. pdostatement->fetchcolumn() — returns a single column from the next row of a result set
  12. pdostatement->fetchobject() — fetches the next row and returns pdostatement->getattribute() — retrieve a statement attribute
  13. pdostatement->getcolumnmeta() — returns metadata for a column in a result set
  14. pdostatement->nextrowset() — adces in the next statement handle
  15. pdostatement->rowcount() — returns the number of rows affected by the last sql statement
  16. pdostatement->setattribute() — set a statement attribute
  17. pdostatement-> statement attribute
複製程式碼
詳解1) pdo中的資料庫連接

  1. $dsn = 'mysql:dbname=ent;host=127.0.0.1′;
  2. $user = 'root';try {
  3. $dbh = new pdo($dsn, $user, $password, array(pdo::attr_persistent => true));
  4. $dbh->query(' set names utf8;');
  5. foreach ($dbh->query('select * from tpm_juese') as $row) {
  6. print_r($row);
  7. }
  8. } catch (pdoexception $e) {
  9. echo 'connection failed: ' . $e->getmessage();
  10. }
複製程式碼

許多web應用程式會因為使用了向資料庫的持久連接而得到最佳化。持久連線不會在腳本結束時關閉, 相反它會被緩存起來並在另一個腳本通過同樣的標識請求一個連接時得以重新利用。 持久連線的快取可以讓你避免在腳本每次需要與資料庫對話時都要部署一個新的連線的資源消耗,讓你的web應用程式更加快速。 上面實例中的array(pdo::attr_persistent => true)就是把連線類型設定為持久連線。

詳解2) pdo中的事務 pdo->begintransaction(),pdo->commit(),pdo->rollback()這三個方法是在支援回溯功能時一起使用的。 pdo->begintransaction()方法標示起始點,pdo->commit()方法標示回溯結束點,並執行sql,pdo->rollback()執行回溯。

  1. try {
  2. $dbh = new pdo('mysql:host=localhost;dbname=test', 'root' , ”);
  3. $dbh->query('set names utf8;');
  4. $dbh->setattribute(pdo::attr_errmode, pdo::errmode_exception);
  5. $dbh->begintransaction( );
  6. $dbh->exec(”insert into `test`.`table` (`name` ,`age`)values ('mick', 22);”);
  7. $dbh->exec (”insert into `test`.`table` (`name` ,`age`)values ('lily', 29);」);
  8. $dbh->exec(”insert into `test`.`table ` (`name` ,`age`)values ('susan', 21);”);
  9. $dbh->commit();
  10. } catch (exception $e) {
  11. $dbh- >rollback();
  12. echo “failed: ” . $e->getmessage();
  13. }
  14. ?>
複製程式碼

複製程式碼

複製程式碼

複製程式碼
  1. 複製程式碼
複製程式碼
複製程式碼複製程式碼複製碼>現在已經透過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.



來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板