亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

pdo用法學習筆記

2024-05-04 21:47:27
字體:
來源:轉載
供稿:網友

一、基本概念

1、PDO:PHP Data Object的縮寫。PDO擴展類庫為PHP定義了一個輕量級的、一致性的接口,它提供了一個數據訪問抽象層,這樣無論使用什么數據庫,都可以通過一致的函數執行查詢和獲取數據。

PDO就是一個“數據庫訪問抽象層”,作用是統一各種數據庫的訪問接口。

2、對任何數據庫的操作,并不是使用PDO擴展本身執行的,必須針對不同的數據庫服務器使用特定的PDO驅動程序訪問。如:MYSQL(PDO_MYSQL)??梢栽趐hpinfo()函數中查看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、連接數據庫

(1)創建PDO對象

(2)設置PDO行為屬性(setattribute())

(3)設置字符集($link->query(‘set names UTF8’))

2、發送SQL語句

(1)準備SQL語句

(2)執行發送

3、查看結果

四、連接數據庫

1、創建PDO對象:

(1)$link = new PDO(DSN, 用戶名, 密碼, 驅動屬性);

1)DSN:數據源名,用來定義一個必須用到的驅動程序和要使用的數據庫。mysql的DSN格式:’mysql:host=localhost;dbname=lamp30’

2)可以將DSN放到文件里,如:’uri:file:///usr/local/dsn.txt’

3)創建對象時要使用try…catch語句,因為在聲明PDO實例發生錯誤時,會自動拋出一個異常。如:

  1. try{ 
  2. $link = new PDO(‘mysql:host=localhost;dbname=lamp30’,’root’,’111111’); 
  3. }catch(PDOException $e){ 
  4. echo $e->getMessage(); 
  5. exit(‘連接數據庫錯誤.’); 

2、驅動屬性

(1)可以將必要的幾個選項組成數組(屬性名作為元素鍵,屬性值作為元素值)傳遞給構造方法的第四個參數。如果沒有在構造方法中定義驅動屬性,可以在之后使用PDO類的setattribute()函數定義各個屬性。

(2)書P501頁有這些屬性中文釋義。

3、設置字符集:$link->query(‘set names UTF8’)

五、發送SQL語句

(1)$link->exec():執行增刪改,返回受影響行數,執行失敗返回false或0。

(2)$link->query():執行查詢,返回PDOStatement結果集對象。

六、查詢結果

1、非查詢:

(1)直接用$link->exec()的返回影響行數

(2)$link->lastInsertId()返回最后一條INSERT命令生成的AUTO_INCREMENT編號值

2、見預處理

七、預處理

1、第二步:發送SQL語句

  1. $stmt = $link->prepare(‘select * from user where id=:id’); 
  2. $stmt->bindparam(‘:id’, $id, PDO::PARAM_INT); 
  3. $id = 2; 
  4. $stmt->execute(); 

bindParam()參數有以下7種:可以不用寫

PDO::PARAM_INT

PDO::PARAM_STR

PDO::PARAM_BOOL

PDO::PARAM_NULL

PDO::PARAM_LOB:大對象數據類型

PDO::PARAM_STMT:PDOstatement類型

PDO::PARAM_INPUT_OUTPUT:存儲過程使用的數據類型

2、第三步:如:

  1. $stmt = $link->query(‘select * from user’); 
  2. (1)fetch()方法 
  3. $pdoStat ->bindColumn(1, $id);                 //第一個參數可以是從1開始的索引值 
  4. $pdoStat ->bindColumn(‘name’, $name);    //也可以是列名 
  5. $pdoStat ->bindColumn(‘pass’, $pass); 
  6. while($row = $stmt ->fetch(PDO::FETCH_BOUND)){ 
  7. echo $id.’ ’; 
  8. echo $name.’ ’; 
  9. echo $pass.’<br>’; 

fetch()參數有六種:見手冊,可以用setFetchMode()方法設置默認模式。

(2)fetchall()方法,代碼如下:

  1. $result = $stmt ->fetchall(); 
  2. foreach($result as $row){ 
  3. echo $row[‘id’].’ ’; 
  4. echo $row[‘name’].’ ’; 
  5. echo $row[‘pass’].’<br>’; 

Fetchall()參數與fetch()相同。

八、事務處理

1、關閉自動提交(在驅動屬性中修改)

2、打開事務

3、提交事務/回滾

4、打開自動提交,如:

  1. $link = new PDO(‘mysql:host=localhost;dbname=lamp30’); 
  2. //1 
  3. $link->setattribute(PDO::ATTR_AUTOCOMMIT, false); 
  4. //2 
  5. $link->begintransaction(); 
  6. $result = $link->exec(‘insert into user(name,paa) values(‘wsy’,’111’)’); 
  7. //3 
  8. if($result){ 
  9. $link->commit(); 
  10. }else
  11. $link->rollback(); 
  12. //4 
  13. $link->setattribute(PDO::ATTR_AUTOCOMMIT, true); 

九、PDO對象中的成員方法

1、$link->getattribute(屬性名):獲取一個驅動屬性。

2、$link->setattribute(屬性名,屬性值):設置一個驅動屬性。

1)因oracle把空字符串返回為NULL值,而其它數據庫無此特性,為了有更好的兼容性$link->setattribute(PDO::ATTR_ORACLE_NULLS ,PDO::NULL_EMPTY_STRING,);

2)有三種顯示錯誤的方式:靜態、WARNING消息、異常

3、$link->errorcode():獲取錯誤碼。

1)如setattribute函數設置顯示錯誤方式為靜態,則出現錯誤時什么都不顯示,必須調用此函數,才能查看錯誤號。

4、$link->errorinfo():獲取錯誤信息(數組)。

1)如setattribute函數設置顯示錯誤方式為靜態,則出現錯誤時什么都不顯示,必須調用此函數,才能查看錯信息。

5、$link->lastinsertid():獲取插入到表中的最后一條數據主鍵值(如有多條數據同時插入,返回第一個插入行的ID)。

6、$link->prepare():發送準備的SQL語句,返回PDOStatement對象。

7、$link->begintransaction():打開事務。

8、$link->commit():提交一個事務,執行一個SQL。

9、$link->rollback():回滾一個事務。

十、錯誤模式

1、靜態模式:代碼如下

$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT)

(1)默認模式,在錯誤發生時不進行任何操作,PDO將只設置錯誤代碼。

(2)查看錯誤可以調用errorCode()和errorInfo(),PDO和PDOStatement類都有這兩個方法。

2、警告模式:代碼如下

$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING)

(1)此模式在設置錯誤代碼以外,PDO還將發出一條PHP傳統的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);

持久連接即當腳本執行結束時不會自動斷開連接,而且用$link->close()不能關閉連接。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
北条麻妃一区二区三区中文字幕| 久久久精品在线| 亚洲热线99精品视频| 中文字幕日韩精品在线观看| 热久久这里只有| 亚洲片在线资源| 久久久免费精品视频| 国产偷国产偷亚洲清高网站| 亚洲成人性视频| 中文字幕日韩欧美| 日韩激情第一页| 日本高清+成人网在线观看| 日韩精品视频免费专区在线播放| 久久精品久久久久| 国产精品高清在线观看| 国产精品偷伦一区二区| 日韩成人在线免费观看| 国产999精品久久久| 亚洲情综合五月天| 久久手机精品视频| 欧美日韩国产丝袜另类| 日韩在线免费视频观看| 欧美老女人bb| 欧美黑人巨大精品一区二区| 日韩国产在线看| 精品国产91乱高清在线观看| 国产福利成人在线| 国产精品日日摸夜夜添夜夜av| 欧美成人午夜视频| 色偷偷888欧美精品久久久| 国产精品一区=区| 亚洲韩国欧洲国产日产av| 亚洲欧美一区二区三区四区| 亚洲aⅴ日韩av电影在线观看| 日韩成人中文电影| 久久久电影免费观看完整版| 国产一区二区三区免费视频| 亚洲欧美制服另类日韩| 欧美日韩高清在线观看| 中文字幕成人精品久久不卡| 亚洲精品自拍偷拍| 亚洲精品www| 国产在线播放不卡| 久久夜色精品国产| 欧美尤物巨大精品爽| 中文字幕日韩欧美在线视频| 欧美人与物videos| 欧美精品videosex性欧美| 国产精品一区二区3区| 国产成人综合久久| 亚洲欧美精品一区二区| 色先锋资源久久综合5566| 66m—66摸成人免费视频| 国产精品91免费在线| 欧美激情2020午夜免费观看| 91影院在线免费观看视频| 国产精品h片在线播放| 亚洲乱码av中文一区二区| 精品一区精品二区| 91人人爽人人爽人人精88v| 日韩在线观看电影| 萌白酱国产一区二区| 欧美国产日韩精品| 欧美黑人一区二区三区| 久久精品国产一区二区电影| 亚洲欧美日韩在线一区| 久久久久久中文| 热99久久精品| 国产手机视频精品| 成人免费网站在线看| 亚洲人成在线观看网站高清| 久久久精品视频成人| 欧美精品成人在线| 国产在线高清精品| 国产精品久久久久久中文字| 91精品国产91久久久久福利| 日韩视频欧美视频| 欧美日韩国产一区二区三区| 成人中文字幕+乱码+中文字幕| 日韩一区二区福利| 96pao国产成视频永久免费| 久久久久这里只有精品| 亚洲成人精品视频在线观看| 日韩av一区二区在线观看| 成人在线播放av| 精品一区二区三区电影| 久久国产精品99国产精| 亚洲桃花岛网站| 亚洲第一免费播放区| 亚洲一区二区三区成人在线视频精品| 欧美黄色片免费观看| 欧美专区国产专区| 欧美一级视频一区二区| 亚洲在线视频福利| 日韩大片在线观看视频| 亚洲女人天堂成人av在线| 欧美第一黄网免费网站| 日韩av综合网站| 亚洲午夜小视频| 亚洲综合在线做性| 97国产精品视频| 欧美日韩在线视频一区二区| 一区二区三区 在线观看视| 国产噜噜噜噜噜久久久久久久久| 中文字幕国产亚洲| 欧美激情精品在线| 亚洲综合社区网| 精品女厕一区二区三区| 欧美亚洲另类制服自拍| xxxx性欧美| 成人激情免费在线| 午夜精品视频网站| 在线成人中文字幕| 亚洲成色777777在线观看影院| 最新国产精品拍自在线播放| 国产成人+综合亚洲+天堂| 中文在线资源观看视频网站免费不卡| 欧美一区二区三区艳史| 精品人伦一区二区三区蜜桃网站| 久久国产精品久久久久| 欧美一级淫片丝袜脚交| 日本精品久久久久久久| 日韩69视频在线观看| 最新日韩中文字幕| 国产精品久久久久福利| 日韩亚洲欧美成人| 高跟丝袜欧美一区| 色综合久久悠悠| 亚洲乱码一区av黑人高潮| 久久91精品国产| 国产一区二区三区视频| 国产欧亚日韩视频| 欧洲亚洲免费视频| 欧美国产日韩精品| 亚洲精品日韩久久久| 国产精品亚发布| 亚洲tv在线观看| 成人黄色免费网站在线观看| 97热精品视频官网| 国产精品永久免费在线| 亚洲欧美综合区自拍另类| 麻豆乱码国产一区二区三区| 久久久久久久久国产精品| 亚洲综合av影视| 国产91在线高潮白浆在线观看| 秋霞av国产精品一区| 国产精品情侣自拍| xxxx欧美18另类的高清| 影音先锋欧美在线资源| 国产裸体写真av一区二区| 久久人人爽人人爽人人片av高请| 国产精品自拍偷拍视频| 精品久久久久久电影| 国产视频亚洲视频| 国产精品都在这里| 91精品视频免费| 久久久久久亚洲精品不卡| 亚洲成人网在线观看| 日本成人激情视频| 国产日本欧美一区二区三区在线| 这里只有精品视频| 国产精品久久久久福利| 亚洲精品999| 国产精品成久久久久三级|