pdo:php data object,php資料物件 是一種純物件導向的操作風格,在新版的php中,php封裝了一套pdo擴充套件庫,專門用來操作不同型別的資料庫!
作用:
由於資料庫的差異性,各個資料庫的呼叫不是完全相同的,同樣的程式如果使用不同的資料庫存放資料時,需要對程式的資料處理部分進行改動,給移植帶來不便。
pdo為資料庫訪問提供了一致的介面,只需在配置的連線引數中,配置不同的資料庫驅動就可以了,而把對資料處理程式的改動降低到最小,甚至不需改動,為資料的處理及安全性都帶來了很大的方便。
使用pdo,需要在php.ini中開啟pdo擴充套件,在新版本中預設開啟
pdo的例項化
pdo的類結構
pdo構造方法:
一共有四個引數:
$dsn:資料來源名稱,告訴系統選擇哪種型別的資料庫,以及主機名和埠號,選擇預設的資料庫和預設的字元編碼等!
$username:資料庫的使用者名稱
$password:資料庫的密碼
$driver_options:附加選項,一般可以用預設
連線成功會返回乙個pdo物件。
使用pdo實現增刪改操作
原理:呼叫pdo類中的 exec() 方法,如果返回受影響行數不為0(為真),則成功
lastinsertid() 方法,返回最後插入記錄的行數
pdo查詢操作
query()方法:
執行sql語句(一般就是select查詢語句),並返回乙個pdostatement類的物件(同mysql操作裡的結果集)
#pdostatement物件例項化pdo類
$pdo = new pdo($dns,$user,$pass);#
sql查詢語句
$sql = '查詢語句';
#呼叫query()方法,得到物件賦給$stmt
$stmt = $pdo->query($sql);
#fetch:返回乙個結果集,引數有如下幾個pdostatement物件 常用函式
#獲取查詢結果中的總行數(總記錄數)
rowcount
#獲取查詢結果中的總列數(總字段數)
columncount
#每次從pdostatement結果集中獲取一條記錄,同時把指標下移,其中該方法有乙個引數
fetch
#返回乙個結果集中所有的記錄,形成乙個二維陣列!可以用foreach遍歷結果
fetchall
#每次獲取一列資訊中的一條記錄(也就是單一值),並將指標下移!
#該方法有乙個引數,用來代表獲取哪一列的資訊,第一列為0,第二列為1,預設值為0,預設為第一列.
fetchcolumn
#作用同 fetch(fetch_obj)
fetchobject
#使用語法:類似mysql_fetch_assoc函式,返回乙個關聯型別的陣列
pdo::fetch_assoc
#類似以前的mysql_fetch_row函式,返回乙個索引陣列
pdo::fetch_num
#類似mysql_fetch_array,返回乙個關聯和索引並存的陣列,為預設值
pdo::fetch_both
#返回乙個物件,其中物件的屬性就是欄位的值
pdo::fetch_obj
#以上獲取的結果每次從結果集中獲取到一條資料,可以用while迴圈便利出來例項化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);
#pdo的相關屬性pdo的屬性都是私有的或者受保護的,外部不能直接修改,但是pdo物件提供了兩個操作屬性的介面:設定乙個空陣列
$rows = array
();#
mysql_fetch_assoc 每次獲取一條記錄,將結果放到 $row 中
while( $row = $stmt->fetch(pdo::fetch_assoc) )
var_dump($rows);
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);
PHP PDO 簡單教程
大約 80 的 web 應用程式由 php 提供支援。類似地,sql 也是如此。php 5.5 版本之前,我們有用於訪問 mysql 資料庫的 mysql 命令,但由於安全性不足,它們最終被棄用。棄用這件事是發生在 2013 年的 php 5.5 上,我寫這篇文章的時間是 2018 年,php 版本...
php pdo 簡單使用 (一)
簡介 pdo擴充套件為php訪問資料庫定義了乙個輕量級的 一致性的介面,它提供了乙個資料訪問抽象層,這樣,無論使用什麼資料庫,都可以通過一致的函式執行查詢和獲取資料。即提供了乙個資料庫訪問抽象層能使得我們通過一致的函式和寫法來操作不同資料庫,有利於日後對資料庫的遷移,當然也有安全方面的提公升。對比 ...
PHP PDO操作mysql事務
mysql事務是把幾個操作綁在一起,使他們同時一起完成或者同時全部不執行。資料更新往往牽涉多個表,使用普通更新,如果中間出現差錯 比如,伺服器突然停止執行了 則更新後的結果非常難辦。如果一點都沒更新,可以執行程式,重新來過 但部分更新,就要挨個 人工 去查 如果資料量非常大,再人工去查,不僅耗費人力...