




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第十章Web程序設(shè)計(jì)PDO數(shù)據(jù)庫抽象層新工科建設(shè)之路·計(jì)算機(jī)類專業(yè)系列教材01PDO概述01PDO概述PDO是實(shí)現(xiàn)數(shù)據(jù)庫抽象層的數(shù)據(jù)庫抽象類,其作用是統(tǒng)一各種數(shù)據(jù)庫的訪問接口,如圖所示。1.PDO的定義01PDO概述①PDO是一個(gè)“數(shù)據(jù)庫訪問抽象層”,其作用是統(tǒng)一各種數(shù)據(jù)庫的訪問接口。②PDO通過一種輕型、清晰、方便的函數(shù),統(tǒng)一各種RDBMS庫的共有特性,實(shí)現(xiàn)PHP腳本最大程度的抽象性和兼容性。③PDO吸取現(xiàn)有數(shù)據(jù)庫擴(kuò)展成功和失敗的經(jīng)驗(yàn)教訓(xùn),利用PHP5的新特性可以輕松地與各種數(shù)據(jù)庫進(jìn)行交互。④PDO擴(kuò)展是模塊化的,能夠在運(yùn)行時(shí)為數(shù)據(jù)庫后端加載驅(qū)動(dòng)程序,而不必重新編譯或重新安裝整個(gè)PHP程序。2.PDO的特點(diǎn)02PDO連接數(shù)據(jù)庫02PDO連接數(shù)據(jù)庫1準(zhǔn)備數(shù)據(jù)首先創(chuàng)建studentinfo數(shù)據(jù)庫,SQL語句為CREATEDATABASEems,接著使用當(dāng)前數(shù)據(jù)庫的操作語句,SQL語句為USEstudentinfo,然后創(chuàng)建名稱為tb__user的數(shù)據(jù)庫表。PDO構(gòu)造函數(shù)通過構(gòu)造方法創(chuàng)建對象的同時(shí),需要建立一個(gè)與數(shù)據(jù)庫服務(wù)器的連接,并選擇一個(gè)數(shù)據(jù)庫。PDO連接數(shù)據(jù)庫是通過創(chuàng)建PDO基類的實(shí)例建立的。無論使用哪種驅(qū)動(dòng)程序,都是用PDO類名建立實(shí)例的。202PDO連接數(shù)據(jù)庫3DSN詳解DSN(DataSourceName,數(shù)據(jù)源名稱)提供連接數(shù)據(jù)庫需要的信息。PDO的DSN包括三部分:PDO驅(qū)動(dòng)名稱(如mysql、sqlite或pgsq1)、“:”和驅(qū)動(dòng)特定的語法。每種數(shù)據(jù)庫都有特定的驅(qū)動(dòng)語法。在使用不同的數(shù)據(jù)庫時(shí),必須明確數(shù)據(jù)庫服務(wù)器是完全獨(dú)立于PHP實(shí)體的。由于數(shù)據(jù)庫服務(wù)器只在特定的端口上監(jiān)聽連接請求,每種數(shù)據(jù)庫服務(wù)器都具有一個(gè)默認(rèn)的端口號(MySQL是3306),但是數(shù)據(jù)庫管理員可以對端口號進(jìn)行修改,因此PHP可能找不到數(shù)據(jù)庫的端口,此時(shí)就可以在DSN中包含端口號。03在PDO中執(zhí)行SQL語句03在PDO中執(zhí)行SQL語句01PDO::exec()方法PDO對象的exec()方法主要用于執(zhí)行INSERT.DELETE和UPDATE語句,成功執(zhí)行后,將返回受影響的行數(shù),其語法格式如下:03在PDO中執(zhí)行SQL語句02PDO::query()方法PDO對象的query()方法主要用于執(zhí)行SELECT語句,成功執(zhí)行后返回一個(gè)結(jié)果集(PDOStatement)對象,其語法格式如下:03在PDO中執(zhí)行SQL語句03預(yù)處理語句prepare()和execute()當(dāng)同一個(gè)查詢需要多次執(zhí)行時(shí)(有時(shí)需要迭代傳入不同的列值),用預(yù)處理語句的方式來實(shí)現(xiàn)的效率,更高。預(yù)處理語句包括prepare()和execute()兩種方法。首先通過prepare()方法做查詢的準(zhǔn)備工作,然后通過execute()方法執(zhí)行查詢,其語法格式如下:03在PDO中執(zhí)行SQL語句03預(yù)處理語句prepare()和execute()預(yù)處理語句可以帶來以下好處①查詢只需解析(或準(zhǔn)備)一次,但是可以用相同或不同的參數(shù)執(zhí)行多次。預(yù)處理語句可以避免重復(fù)分析、編譯和優(yōu)化的周期。簡言之,預(yù)處理語句使用更少的資源,因而運(yùn)行得更快。②提供給預(yù)處理語句的參數(shù)不需要用引號括起來,驅(qū)動(dòng)程序會處理這些。如果仍然將查詢的其他部分建立在不受信任的輸入之上,就仍然存在風(fēng)險(xiǎn)。04在PDO中獲取結(jié)果集04在PDO中獲取結(jié)果集01fetch()方法fetch()方法獲取結(jié)果集中的下一行,其語法格式如下:其中,fetch_style控制結(jié)果集的返回方式,其可選值如表所示,cursor_orientation為PDOStatement對象的一個(gè)滾動(dòng)游標(biāo),可用于獲取指定的一行;cursor_offset為游標(biāo)的偏移量。04在PDO中獲取結(jié)果集02fetchAll()方法fetchAll()方法用于獲取結(jié)果集中的所有行,其語法格式如下:其中,fetch_style控制結(jié)果集中數(shù)據(jù)的顯示方式,column_index為字段的索引。fetchAll()方法的返回值是一個(gè)包含結(jié)果集中所有數(shù)據(jù)的二維數(shù)組。04在PDO中獲取結(jié)果集03fetchColumn()方法fetchColumn()方法用于獲取結(jié)果集中下一行指定列的值,其語法格式如下:其中,可選參數(shù)column_number用于設(shè)置行中列的索引值,該值從0開始,如果省略該參數(shù),就將從第1列開始取值。注意,這里獲取的是結(jié)果集中下一行指定列的值。05在PDO中獲取結(jié)果集05在PDO中捕獲SQL語句的錯(cuò)誤01默認(rèn)模式:PDO::ERRMODESILENT在PDO中獲取SQL語句中的錯(cuò)誤有3種模式。在默認(rèn)模式中設(shè)置PDOStatement對象的errorCode屬性,但不進(jìn)行其他任何操作。通過prepare()和execute()方法向數(shù)據(jù)庫中添加數(shù)據(jù),設(shè)置PDOStatement對象的errorCode屬性,手動(dòng)檢測代碼中的錯(cuò)誤。05在PDO中捕獲SQL語句的錯(cuò)誤02警告模式:PDO::ERRMODE_WARNING;警告模式會產(chǎn)生一個(gè)PHP警告,并且設(shè)置errorCode屬性。如果設(shè)置的是警告模式,除非明確地檢查錯(cuò)誤代碼,否則程序?qū)⒗^續(xù)按照其他方式運(yùn)行。設(shè)置警告模式需要通過prepare()和execute()方法讀取數(shù)據(jù)庫中的數(shù)據(jù),并且通過while語句和fetch()方法完成數(shù)據(jù)的循環(huán)輸出,領(lǐng)會在設(shè)置成警告模式后執(zhí)行錯(cuò)誤的SQL語句。具體示例如下。05在PDO中捕獲SQL語句的錯(cuò)誤03異常模式:PDO::ERRMODE_EXCEPTION使用異常模式會創(chuàng)建一個(gè)PDOException,并且設(shè)置errorCode屬性,可以將執(zhí)行代碼封裝到一個(gè)try-catch語句塊中。未捕獲的異常將導(dǎo)致腳本中斷,并且顯示堆棧跟蹤了解是哪里出現(xiàn)的問題。06PDO中的錯(cuò)誤處理06PDO中的錯(cuò)誤處理01errorCode()方法errorCode()方法用于獲取在操作數(shù)據(jù)庫句柄時(shí)發(fā)生的錯(cuò)誤代碼,這些錯(cuò)誤代碼被稱為SQLSTATE代碼,其語法格式如下:返回一個(gè)SQLSTATE,SQLSTATE是由5個(gè)數(shù)字和字母組成的代碼。PDO通過query()方法完成數(shù)據(jù)的查詢操作,并通過foreach語句完成數(shù)據(jù)的循環(huán)輸出。在定義SQL語句時(shí)使用一個(gè)錯(cuò)誤的數(shù)據(jù)表,并
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年河南中醫(yī)藥大學(xué)單招職業(yè)技能測試題庫必考題
- 2025年貴州裝備制造職業(yè)學(xué)院單招職業(yè)技能測試題庫學(xué)生專用
- 第1課 中華人民共和國的成立(教學(xué)設(shè)計(jì))-2023-2024學(xué)年八年級歷史下冊新課標(biāo)核心素養(yǎng)一站式同步教與學(xué)
- 體操類運(yùn)動(dòng)的特點(diǎn)與價(jià)值 教學(xué)設(shè)計(jì)-2024-2025學(xué)年高一上學(xué)期體育與健康人教版必修第一冊
- 2025年海南體育職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫帶答案
- 第12章 第1節(jié) 杠桿(教學(xué)設(shè)計(jì))2023-2024學(xué)年八年級下冊物理人教版(安徽專版)
- 2025年貴州交通職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫附答案
- 2025高考生物備考教學(xué)設(shè)計(jì):第二章 細(xì)胞的基本結(jié)構(gòu)和物質(zhì)的運(yùn)輸 課時(shí)4 物質(zhì)出入細(xì)胞的方式及影響因素
- 2025至2030年中國水份眼膠數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025年湖南吉利汽車職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫含答案
- 海運(yùn)客服專員崗位職責(zé)
- 電是怎么產(chǎn)生的
- 新概念英語第一冊課文完整版
- 急救藥品搶救藥品培訓(xùn)
- 人教鄂教版三年級下冊科學(xué)全冊教案
- 如何做好一名優(yōu)秀的項(xiàng)目經(jīng)理
- (完整word版)中考定語從句精講+練習(xí)答案
- 110KV電纜敷設(shè)專項(xiàng)施工方案方案
- 醫(yī)師簽名(簽章)留樣備案表
- 0~6歲兒童眼保健和視力檢查標(biāo)準(zhǔn)技術(shù)操作
- 卷內(nèi)目錄填寫式樣
評論
0/150
提交評論