PDO:PHP Data Object,PHP數據對象 是一種純面向對象的操做風格,在新版的PHP中,PHP封裝了一套PDO擴展庫,專門用來操做不一樣類型的數據庫!php
做用:mysql
因爲數據庫的差別性,各個數據庫的調用不是徹底相同的,一樣的程序若是使用不一樣的數據庫存放數據時,須要對程序的數據處理部分進行改動,給移植帶來不便。sql
pdo爲數據庫訪問提供了一致的接口,只需在配置的鏈接參數中,配置不一樣的數據庫驅動就能夠了,而把對數據處理程序的改動下降到最小,甚至不需改動,爲數據的處理及安全性都帶來了很大的方便。數據庫
使用PDO,須要在php.ini中開啓PDO擴展,在新版本中默認開啓數組
PDO的實例化安全
PDO的類結構函數
PDO構造方法:fetch
一共有四個參數:
$dsn:數據源名稱,告訴系統選擇哪一種類型的數據庫,以及主機名和端口號,選擇默認的數據庫和默認的字符編碼等!
$username:數據庫的用戶名
$password:數據庫的密碼
$driver_options:附加選項,通常能夠用默認編碼
鏈接成功會返回一個PDO對象。spa
使用PDO實現增刪改操做
原理:調用PDO類中的 exec() 方法,若是返回受影響行數不爲0(爲真),則成功
lastInsertID() 方法,返回最後插入記錄的行數
PDO查詢操做
query()方法:執行sql語句(通常就是select查詢語句),並返回一個PDOStatement類的對象(同mysql操做裏的結果集)
#實例化PDO類 $pdo = new PDO($dns,$user,$pass); #sql查詢語句 $sql = '查詢語句'; #調用query()方法,獲得對象賦給$stmt $stmt = $pdo->query($sql);
PDOStatement對象
# PDOStatement對象 經常使用函數 #獲取查詢結果中的總行數(總記錄數) rowCount #獲取查詢結果中的總列數(總字段數) columnCount #每次從PDOStatement結果集中獲取一條記錄,同時把指針下移,其中該方法有一個參數 fetch #返回一個結果集中全部的記錄,造成一個二維數組!能夠用foreach遍歷結果 fetchAll #每次獲取一列信息中的一條記錄(也就是單一值),並將指針下移! #該方法有一個參數,用來表明獲取哪一列的信息,第一列爲0,第二列爲1,缺省值爲0,默認爲第一列. fetchColumn #做用同 fetch(FETCH_OBJ) fetchObject
fetch:返回一個結果集,參數有以下幾個
#相似mysql_fetch_assoc函數,返回一個關聯類型的數組 PDO::FETCH_ASSOC #相似之前的mysql_fetch_row函數,返回一個索引數組 PDO::FETCH_NUM #相似mysql_fetch_array,返回一個關聯和索引並存的數組,爲默認值
PDO::FETCH_BOTH #返回一個對象,其中對象的屬性就是字段的值 PDO::FETCH_OBJ
使用語法:
#實例化PDO類 $pdo = new PDO($dns,$user,$pass); #sql查詢語句 $sql = '查詢語句'; #調用query()方法,獲得對象賦給$stmt $stmt = $pdo->query($sql); #分別使用fetch第四個參數獲取結果 $stmt ->fetch(PDO::FETCH_ASSOC); $stmt ->fetch(PDO::FETCH_NUM); $stmt ->fetch(PDO::FETCH_BOTH); $stmt ->fetch(PDO::FETCH_OBJ);
以上獲取的結果每次從結果集中獲取到一條數據,能夠用while循環便利出來
#設置一個空數組 $rows = array(); # mysql_fetch_assoc 每次獲取一條記錄,將結果放到 $row 中 while( $row = $stmt->fetch(PDO::FETCH_ASSOC) ){ #用while循環將每次獲得的結果放入數組元素 $rows[] = $row; } var_dump($rows);
PDO的相關屬性
PDO的屬性都是私有的或者受保護的,外部不能直接修改,可是PDO對象提供了兩個操做屬性的接口:
PDO::getAttribute // 取回一個數據庫鏈接的屬性 PDO::setAttribute // 設置屬性
設置屬性方面只要一下幾個:
PDO::ATTR_AUTOCOMMIT:自動提交 可選值有兩個:
0或者1。0表明不開啓自動提交,手動使用commit方法;1表明開啓自動提交,也是默認值 PDO::ATTR_CASE:返回結果集字段名大小寫(重要) 可選值一共有三個: PDO::CASE_LOWER:返回的結果集所有爲小寫 PDO::CASE_UPPER:返回的結果集所有爲大寫 PDO::CASE_NATURAL:返回的結果集爲正常(原來是什麼樣返回的仍是什麼樣,也是默認值) PDO::ATTR_ERRMODE:返回的錯誤模式(重要) 可選值有三個: PDO::ERRMODE_SILENT:靜默模式,也是默認值(出錯無任何提示) PDO::ERRMODE_WARNING:警告模式 PDO::ERRMODE_EXCEPTION:異常模式
使用語法舉例:
#實例化PDO類 $pdo = new PDO($dns,$user,$pass); #設置屬性,將異常模式設置爲警告模式 $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING); $sql = '一條錯誤的sql語句'; $stmt = $pdo->query($sql);