PDO一是PHP數據對象(PHP Data Object)的縮寫,就是把操作數據庫的函數封裝成一個pdo類,其間做了安全驗證。POD是PHP一個擴展,PDO擴展爲PHP訪問數據庫定義了一個輕量級的、一致性的接口,它提供了一個數據訪問抽象層,這樣,無論使用什麼數據庫,都可以通過一致的函數執行查詢和獲取數據。
PDO常用方法:
PDO::query() 主要用於有記錄結果返回的操作,特別是select操作。
PDO::exec()主要是針對沒有結果集合返回的操作。如insert,update等操作。返回影響行數。
PDO::lastInsertId()返回上次插入操作最後一條ID,但要注意:如果用insert into tb(col1,col2)values(v1,v2),(v11,v22)..的方式一次插入多條記錄,lastinsertid()返回的只是第一條 (v1,v2)插入時的ID,而不是最後一條記錄插入的記錄ID。
PDOStatement::fetch()是用來獲取一條記錄。配合while來遍歷。
PDOStatement::fetchAll()是獲取所有記錄集到一箇中。
PDOStatement::fetchcolumn([intcolumn_indexnum])用於直接訪問列,參數column_indexnum 是該列在行中的從0開始索引值,但是,這個方法一次只能取得同一行的一列,只要執行一次,就跳到下一行。因此,用於直接訪問某一列時較好用,但要遍歷多列 就用不上。
PDOStatement::rowcount()適用於當用query("select...")方法時,獲取記錄的條數。也可以用於預處理中。$stmt->rowcount();
PDOStatement::columncount()適用於當用query("select...")方法時,獲取記錄的列數。
註解:
1、選fetch還是fetchall?
小記錄集時,用fetchall效率高,減少從數據庫檢索次數,但對於大結果集,用fetchall則給系統帶來很大負擔。數據庫要向WEB前端傳輸量太大反而效率低。
2、fetch()或fetchall()有幾個參數:
mixed pdostatement::fetch([int fetch_style[,int cursor_orientation [,int cursor_offset]]])
array pdostatement::fetchAll(int fetch_style)
更多的PDO方法:
PDO::beginTransaction — 啓動一個事務
PDO::commit — 提交一個事務
PDO::__construct — 創建一個表示數據庫連接的 PDO 實例
PDO::errorCode — 獲取跟數據庫句柄上一次操作相關的 SQLSTATE
PDO::errorInfo — Fetch extended error information associated with the last operation on the database handle
PDO::exec — 執行一條 SQL 語句,並返回受影響的行數
PDO::getAttribute — 取回一個數據庫連接的屬性
PDO::getAvailableDrivers — 返回一個可用驅動的數組
PDO::inTransaction — 檢查是否在一個事務內
PDO::lastInsertId — 返回最後插入行的ID或序列值
PDO::prepare — Prepares a statement for execution and returns a statement object
PDO::query — Executes an SQL statement, returning a result set as a PDOStatement object
PDO::quote — Quotes a string for use in a query.
PDO::rollBack — 回滾一個事務
PDO::setAttribute — 設置屬性
PDO異常相關
Exception::getMessage — 獲取異常消息內容。
Exception::getPrevious — 返回異常鏈中的前一個異常
Exception::getCode — 獲取異常代碼
Exception::getFile — 獲取發生異常的程序文件名稱
Exception::getLine — 獲取發生異常的代碼在文件中的行號
Exception::getTrace — 獲取異常追蹤信息
Exception::getTraceAsString — 獲取字符串類型的異常追蹤信息
Exception::toString — 將異常對象轉換爲字符串
Exception::clone — 異常克隆
PDO屬性列表:
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)
設定沒有錯誤時候的錯誤信息