PHP中PDO擴充套件庫總結

2021-08-02 12:20:22 字數 4647 閱讀 6675

一.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...