一.pdo作用
1.pdo(php data object)擴充套件類庫為php訪問資料庫定義了輕量級的,一致性的介面
2.pdo提供了乙個資料庫訪問抽象層,無論你使用了什麼樣的資料庫,都可以通過一致的
函式執行查詢和獲取資料,大大簡化了資料庫的操作,並能夠遮蔽不同資料庫之間的差異
使用pdo可以方便的進行跨資料庫程式的開發,以及不同資料庫之間的移植
二.開啟pdo擴充套件
1.使用pdo,需要載入pdo擴充套件庫,請確定php.ini開始資料庫擴充套件
extension_dir = "f:/wamp/php-5.4.45/ext"
extension=php_pdo.dll
extension=php_pdo_mysql.dll
2.重啟apache服務
3.使用
extension_loaded()函式可以檢測mysqli庫擴充套件是否開啟
三.使用pdo運算元據庫
在php指令碼中使用pdo運算元據庫的步驟:
鏈結資料庫伺服器並選擇資料庫
設定使用異常的錯誤模式
設定字符集
準備並執行sql語句
處理結果集
四.鏈結mysql,並選擇資料庫
new pdo('dsn','使用者名稱','密碼');
dsn(data source name)資料來源名稱包含了請求鏈結到資料庫資訊
通常,乙個dsn由pdo驅動名,緊隨其後跟著冒號,以及具體的pdo驅動的鏈結語法組成:
mysql:host=127.0.0.1;port=3306;dbname=鏈結的資料庫名
pdoexception 異常類 代表乙個由pdo產生的錯誤
getmessage() 獲取錯誤資訊
例:try catch (pdoexception $e)
五.設定使用異常的錯誤模式
pdo::getattribute() 取回乙個資料庫鏈結的屬性
pdo::setattribute() 設定屬性
pdo::attr_errmode:錯誤模式
pdo::errmode_silent: 僅設定錯誤**,不提示
pdo::errmode_warning: 引發 e_warning 錯誤
pdo::errmode_exception: 丟擲 exceptions 異常
pdo::exec()執行sql為
insert update dalete等操作語句 正確將返回受影響的行數,錯誤將
返回false
pdo::query() 執行sql為
select、show等查詢語句,正確執行將返回資源結果集物件,錯誤執行
將返回false
六.處理資源結果集
setfetchmode(pdo::fetch_num|pdo::fetch_assoc|pdo::fetch_both) 設定結果集中陣列的格式
fetch_num 索引陣列
fetch_assoc 關聯陣列
fetch_both 關聯|索引 陣列
fetch() 從結果集中抽取一行作為陣列返回 沒有則返回false
fetchall() 從結果集中抽取所有記錄
七.處理非查詢語句
lastinsertid() 在插入紀錄時,返回最後插入記錄的主鍵id
八.pdo預處理
預處理好處:僅需解析一次,但可以用相同或不同的引數執行多次
可以確保不會發生sql注入,提高安全性
1.先new出來乙個資料庫物件
例:$pdo=new pdo("mysql:host=127.0.0.1;port=3306;dbname=yhshop",'root','123456');
2.設定漢字編碼
$pdo->exec("set names utf8");
3.準備要執行sql語句
pdo::prepare() 準備乙個sql語句並返回乙個語句物件
例:$staement=$pdo->prepare(insert into test(name,pwd,mobile) values(?,?,?));
別名形式(適合引數多)
例:$staement=$pdo->prepare(insert into test(name,pwd,mobile) values(:name,:pwd,:mobile));
4.繫結引數
bindparam(佔位名[?的話就是用1,2,3|:name,:pwd的話就是':name','pwd'],要賦值的變數名,變數資料型別) 繫結乙個引數到指定的變數名
變數資料型別:
pdo::param_str 字串型
pdo::param_int 整型
pdo::param_bool 布林型別
pod::param_null null資料型別
pod::param_lob 大物件資料型別
pdo賦值 資料型別不會強制轉換
mysqli賦值 資料型別會強制轉換
例:$staement->bindparam(1,$username,pdo::param_str);
$staement->bindparam(2,$password,pdo::param_str);
5.資料賦值
例:$username='小六';
$password=md5(123456);
6.執行sql語句
execute() 執行一條預處理語句 可以在函式裡直接賦值 寫成陣列
rowcount() 返回受上一條sql語句影響的行數 沒有引數
別名形式
繫結引數
$statement->bindparam(':username',$username,pdo::param_str);
$statement->bindparam(':password',$password,pdo::param_str);
資料賦值
$username='yh002';
$password=md5('123');
執行sql
$statement->execute(array('username'=>$username,'pwd'=>$password));
也可以不繫結引數在執行sql時直接賦值
$statement->execute(array('pwd'=>md5('123'),'username'=>'yh002'));
九.pdo事物處理
事物:將多條sql操作(增刪改)作為乙個操作單元,要麼成功要麼失敗
被操作的表必須是innodb型別
設定表型別:alter table yh_admin engine=innodb;
關閉事物處理
set autocommit=0;
setattribute() 設定乙個語句屬性,當前沒有通用的屬性可以設定,只有驅動屬性:
pdo::attr_autocommit 如果此值為false pdo將試圖禁用自動提交以便資料庫連線乙個事物
開啟事物
start transaction;
begintransaction() 啟動乙個事物 沒有引數
提交事物
commit;
commit() 提交乙個事物 沒有引數
回滾事物
rollback;
rollback() 回滾乙個事物 沒有引數
異常處理
例:throw new pdoexception('事務處理失敗,請重新嘗試');
throw 是明確的丟擲異常
catch 是用來處理異常錯誤
十.大資料物件的處理
儲存$dbh= new pdo('mysql:dbname=testdb;host=localhost', 'root', '123456');
$stmt = $db->prepare("insert into images(mimetype,data) values (?, ?)");
//使用fopen()函式開啟上傳的檔案
$fp = fopen($_files['file']['tmp_name'], 'rb');
//將上傳檔案的mime型別繫結到第乙個引數中
$stmt->bindparam(1, $_files['file']['type']);
//將上傳檔案的二進位制資料和第二個引數繫結
$stmt->bindparam(2, $fp, pdo_param_lob);
$stmt->execute();
bindparam() 繫結乙個引數到指定變數名
bindcolumn() 繫結一列到乙個 php 變數
讀取$db = new pdo('mysql:dbname=testdb;host=localhost', 'root', '123456');
$stmt = $db->prepare("select mimetype,data from images where id=?");
//通過表單中輸入的id值和引數繫結,並執行查詢
$stmt->execute(array($_get['id']));
//獲取結果集中的大資料型別和檔案資料
list($type, $data) = $stmt->fetch();
header("content-type: $type");
//將從表中讀取的大檔案型別作為合適的報頭髮送
echo $data;
PHP開啟PDO擴充套件
php pdo擴充套件 pdopdo是php資料物件 php object 的縮寫,pdo是乙個第三方類,預設以整合到php中,使用pdo可以輕鬆對接各種不同型別的資料庫,且操作方式和方法呼叫都基本一樣.pdo作用是統一各種資料庫的訪問介面.開啟pdo擴充套件 開啟mysql擴充套件為例 在php....
php開啟pdo擴充套件
在windows環境下php 5.1以上版本中,pdo和主要資料庫的驅動同php一起作為擴充套件發布,要啟用它們只需要簡單地編輯php.ini檔案.開啟php.ini配置檔案,找到extension php pdo.dll 配置php配置檔案,開啟相應擴充套件 和 extension php pdo...
Linux 下 PHP 擴充套件 PDO 編譯安裝
本文內容是以 centos 為例,紅帽系列的 linux 方法應該都是如此,下面就詳細說明步驟,在這裡嚴重鄙視哪些內容囉嗦 說的雜七雜八的有關 pdo 編譯安裝的文章。1 進入 php 的軟體包 pdo 擴充套件目錄中 注 不是 php 安裝目錄 plain view plain copy root...