這篇文章主要講解了“php中的pdo如何用”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“php中的pdo如何用”吧!
創(chuàng)新互聯(lián)公司服務項目包括青山湖網(wǎng)站建設、青山湖網(wǎng)站制作、青山湖網(wǎng)頁制作以及青山湖網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網(wǎng)行業(yè)的解決方案,青山湖網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到青山湖省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
一、 基本概念
1、 PDO:PHP Data Object的縮寫。PDO擴展類庫為PHP定義了一個輕量級的、一致性的接口,它提供了一個數(shù)據(jù)訪問抽象層,這樣無論使用什么數(shù)據(jù)庫,都可以通過一致的函數(shù)執(zhí)行查詢和獲取數(shù)據(jù)。
PDO就是一個“數(shù)據(jù)庫訪問抽象層”,作用是統(tǒng)一各種數(shù)據(jù)庫的訪問接口。
2、 對任何數(shù)據(jù)庫的操作,并不是使用PDO擴展本身執(zhí)行的,必須針對不同的數(shù)據(jù)庫服務器使用特定的PDO驅(qū)動程序訪問。如:MySQL(PDO_MYSQL)??梢栽趐hpinfo()函數(shù)中查看PDO部分的列表。
二、PDO的安裝
1、Linux:安裝PHP時,向configure命令中添加如下標志:
–with-pdo-mysql=/usr/local/mysql //其中/usr/local/mysql為mysql安裝目錄
2、Windows:
在C:windows下找到php.ini文件
(1)打開:extension=php_pdo.dll
(2)打開:extension=php_pdo_mysql.dll
三、使用PDO過程
1、連接數(shù)據(jù)庫
(1)創(chuàng)建PDO對象
(2)設置PDO行為屬性(setattribute())
(3)設置字符集($link->query(‘set names UTF8’))
2、發(fā)送SQL語句
(1)準備SQL語句
(2)執(zhí)行發(fā)送
3、查看結果
四、連接數(shù)據(jù)庫
1、創(chuàng)建PDO對象:
(1)$link = new PDO(DSN, 用戶名, 密碼, 驅(qū)動屬性);
1)DSN:數(shù)據(jù)源名,用來定義一個必須用到的驅(qū)動程序和要使用的數(shù)據(jù)庫。mysql的DSN格式:’mysql:host=localhost;dbname=lamp30’
2)可以將DSN放到文件里,如:’uri:file:///usr/local/dsn.txt’
3)創(chuàng)建對象時要使用try…catch語句,因為在聲明PDO實例發(fā)生錯誤時,會自動拋出一個異常。如:
代碼如下
try{ $link = new PDO(‘mysql:host=localhost;dbname=lamp30’,’root’,’111111’); }catch(PDOException $e){ echo $e->getMessage(); exit(‘連接數(shù)據(jù)庫錯誤.’); }
2、驅(qū)動屬性
(1)可以將必要的幾個選項組成數(shù)組(屬性名作為元素鍵,屬性值作為元素值)傳遞給構造方法的第四個參數(shù)。如果沒有在構造方法中定義驅(qū)動屬性,可以在之后使用PDO類的setattribute()函數(shù)定義各個屬性。
(2)書P501頁有這些屬性中文釋義。
3、設置字符集:$link->query(‘set names UTF8’)
五、發(fā)送SQL語句
(1)$link->exec():執(zhí)行增刪改,返回受影響行數(shù),執(zhí)行失敗返回false或0。
(2)$link->query():執(zhí)行查詢,返回PDOStatement結果集對象。
六、查詢結果
1、非查詢:
(1)直接用$link->exec()的返回影響行數(shù)
(2)$link->lastInsertId()返回最后一條INSERT命令生成的AUTO_INCREMENT編號值
2、見預處理
七、預處理
1、第二步:發(fā)送SQL語句
代碼如下
$stmt = $link->prepare(‘select * from user where id=:id’); $stmt->bindparam(‘:id’, $id, PDO::PARAM_INT); $id = 2; $stmt->execute();
bindParam()參數(shù)有以下7種:可以不用寫
PDO::PARAM_INT
PDO::PARAM_STR
PDO::PARAM_BOOL
PDO::PARAM_NULL
PDO::PARAM_LOB:大對象數(shù)據(jù)類型
PDO::PARAM_STMT:PDOstatement類型
PDO::PARAM_INPUT_OUTPUT:存儲過程使用的數(shù)據(jù)類型
2、第三步:
如:
代碼如下
$stmt = $link->query(‘select * from user’);
(1)fetch()方法
$pdoStat ->bindColumn(1, $id); //第一個參數(shù)可以是從1開始的索引值 $pdoStat ->bindColumn(‘name’, $name); //也可以是列名 $pdoStat ->bindColumn(‘pass’, $pass); while($row = $stmt ->fetch(PDO::FETCH_BOUND)){ echo $id.’ ’; echo $name.’ ’; echo $pass.’ ’; }
fetch()參數(shù)有六種:見手冊。
可以用setFetchMode()方法設置默認模式。
(2)fetchall()方法
代碼如下
$result = $stmt ->fetchall(); foreach($result as $row){ echo $row[‘id’].’ ’; echo $row[‘name’].’ ’; echo $row[‘pass’].’ ’; }
Fetchall()參數(shù)與fetch()相同。
八、事務處理
1、關閉自動提交(在驅(qū)動屬性中修改)
2、打開事務
3、提交事務/回滾
4、打開自動提交
如:
代碼如下
$link = new PDO(‘mysql:host=localhost;dbname=lamp30’); //1 $link->setattribute(PDO::ATTR_AUTOCOMMIT, false); //2 $link->begintransaction(); $result = $link->exec(‘insert into user(name,paa) values(‘wsy’,’111’)’); //3 if($result){ $link->commit(); }else{ $link->rollback(); } //4 $link->setattribute(PDO::ATTR_AUTOCOMMIT, true);
九、PDO對象中的成員方法
1、$link->getattribute(屬性名):獲取一個驅(qū)動屬性。
2、$link->setattribute(屬性名,屬性值):設置一個驅(qū)動屬性。
1)因oracle把空字符串返回為NULL值,而其它數(shù)據(jù)庫無此特性,為了有更好的兼容性$link->setattribute(PDO::ATTR_ORACLE_NULLS ,PDO::NULL_EMPTY_STRING,);
2)有三種顯示錯誤的方式:靜態(tài)、WARNING消息、異常
3、$link->errorcode():獲取錯誤碼。
1)如setattribute函數(shù)設置顯示錯誤方式為靜態(tài),則出現(xiàn)錯誤時什么都不顯示,必須調(diào)用此函數(shù),才能查看錯誤號。
4、$link->errorinfo():獲取錯誤信息(數(shù)組)。
1)如setattribute函數(shù)設置顯示錯誤方式為靜態(tài),則出現(xiàn)錯誤時什么都不顯示,必須調(diào)用此函數(shù),才能查看錯信息。
5、$link->lastinsertid():獲取插入到表中的最后一條數(shù)據(jù)主鍵值(如有多條數(shù)據(jù)同時插入,返回第一個插入行的ID)。
6、$link->prepare():發(fā)送準備的SQL語句,返回PDOStatement對象。
7、$link->begintransaction():打開事務。
8、$link->commit():提交一個事務,執(zhí)行一個SQL。
9、$link->rollback():回滾一個事務。
十、錯誤模式
1、靜態(tài)模式:
代碼如下
$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT)
(1) 默認模式,在錯誤發(fā)生時不進行任何操作,PDO將只設置錯誤代碼。
(2) 查看錯誤可以調(diào)用errorCode()和errorInfo(),PDO和PDOStatement類都有這兩個方法。
2、警告模式:
代碼如下
$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING)
(1)此模式在設置錯誤代碼以外,PDO還將發(fā)出一條PHP傳統(tǒng)的E_WARNING消息。
(2)這是mysql和mysqli顯示錯的方式。
3、異常模式:
代碼如下
$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)
(1) 此模式在設置錯誤代碼以外,PDO還將拋出一個PDOException,并設置其屬性,以反映錯誤代碼和錯誤信息。
(2) 如果異常導致腳本終止,則事務將自動回滾。
(3) PDO推薦使用此模式。
十一、持久連接
代碼如下
$link->setAttribute(PDO::ATTR_PERSISTENT, true);
持久連接即當腳本執(zhí)行結束時不會自動斷開連接,而且用$link->close()不能關閉連接。
感謝各位的閱讀,以上就是“php中的pdo如何用”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對php中的pdo如何用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關知識點的文章,歡迎關注!