《PHP+MySQL動(dòng)態(tài)網(wǎng)頁(yè)設(shè)計(jì)》課件 9.3 使用預(yù)處理語句_第1頁(yè)
《PHP+MySQL動(dòng)態(tài)網(wǎng)頁(yè)設(shè)計(jì)》課件 9.3 使用預(yù)處理語句_第2頁(yè)
《PHP+MySQL動(dòng)態(tài)網(wǎng)頁(yè)設(shè)計(jì)》課件 9.3 使用預(yù)處理語句_第3頁(yè)
《PHP+MySQL動(dòng)態(tài)網(wǎng)頁(yè)設(shè)計(jì)》課件 9.3 使用預(yù)處理語句_第4頁(yè)
《PHP+MySQL動(dòng)態(tài)網(wǎng)頁(yè)設(shè)計(jì)》課件 9.3 使用預(yù)處理語句_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第9章PHP訪問與操作MySQL數(shù)據(jù)庫(kù)9.3使用預(yù)處理語句1.PDOStatement對(duì)象簡(jiǎn)介2.準(zhǔn)備SQL語句3.綁定參數(shù)4.執(zhí)行SQL語句5.獲取數(shù)據(jù)本節(jié)內(nèi)容使用預(yù)處理語句當(dāng)一條除參數(shù)以外、其他部分完全相同的SQL語句需要多次執(zhí)行時(shí),該如何處理呢?針對(duì)這種重復(fù)執(zhí)行同一條SQL語句,但每次迭代使用不同參數(shù)的情況,PDO提供了一種名為預(yù)處理語句(PreparedStatement)的機(jī)制,它是將整個(gè)SQL命令向數(shù)據(jù)庫(kù)服務(wù)器發(fā)送一次,以后只要參數(shù)發(fā)生變化,數(shù)據(jù)庫(kù)服務(wù)器只需要對(duì)SQL命令的結(jié)構(gòu)做一次分析就夠了,即編譯一次,可以多次執(zhí)行。這不僅大大減少了需要傳輸?shù)臄?shù)據(jù)量,還提高了SQL命令的處理效率,還可以有效防止SQL注入,在執(zhí)行單個(gè)SQL語句時(shí)也快于直接使用exec()、query()方法,而且安全,推薦使用!1.PDOStatement對(duì)象簡(jiǎn)介PDO對(duì)預(yù)處理語句的支持需要使用PDOStatement類對(duì)象,但該類的對(duì)象并不是通過NEW關(guān)鍵字實(shí)例化出來的,而是通過執(zhí)行PDO對(duì)象中的prepare()方法,在數(shù)據(jù)庫(kù)服務(wù)器中準(zhǔn)備好一個(gè)預(yù)處理的SQL語句后直接返回的。如果通過之前執(zhí)行PDO對(duì)象中的query()方法返回的PDOStatement類對(duì)象,代表的只是一個(gè)結(jié)果集對(duì)象;而如果通過執(zhí)行PDO對(duì)象中的prepare()方法產(chǎn)生的PDOStatement類對(duì)象,則為一個(gè)查詢對(duì)象,能定義和執(zhí)行參數(shù)化的SQL命令。1.PDOStatement對(duì)象簡(jiǎn)介PDOStatement類中的成員方法如下表所示。2.準(zhǔn)備SQL語句重復(fù)執(zhí)行同一條SQL語句,通過每次迭代使用不同的參數(shù),這種情況使用預(yù)處理語句運(yùn)行效率最高。使用預(yù)處理語句,首先需要在數(shù)據(jù)庫(kù)服務(wù)器中準(zhǔn)備好“一條SQL語句”,但并不需要馬上執(zhí)行它。PDO支持使用“占位符”語法,將變量綁定到這條預(yù)處理的SQL語句中。準(zhǔn)備SQL語句使用的是PDO對(duì)象中的prepare()方法,其語法格式如下:PDOStatementPDO::prepare(stringsql[,arraydriver_options=array()])2.準(zhǔn)備SQL語句對(duì)于一條準(zhǔn)備好的SQL語句,如果在每次執(zhí)行時(shí)都要改變一些列值,則必須使用“占位符號(hào)”而不是具體的列值;或者只要有需要使用變量作為值的地方,就先使用占位符號(hào)替代。在PDO中有兩種使用占位符的語法,一種是“命名參數(shù)”,即,冒號(hào)(“:”)加上一個(gè)標(biāo)識(shí)符,標(biāo)識(shí)符一定要有意義,最好與對(duì)應(yīng)的字段名稱相同;另外一種是“問號(hào)參數(shù)”,即,問號(hào)(“?”)。它們功能都一樣,使用哪一種語法主要看個(gè)人喜好。2.準(zhǔn)備SQL語句使用“命名參數(shù)”作為占位符的INSERT語句如下所示:$link->prepare("insertintostudent(sNo,sName,sex,birthday,dept_id,remark)

values(:sNo,:sName,:sex,:birthday,:dept_id,:remark)");使用“問號(hào)參數(shù)”作為占位符的INSERT語句如下所示:$link->prepare("insertintostudent(sNo,sName,sex,birthday,dept_id,remark)

values(?,?,?,?,?,?)");3.綁定參數(shù)當(dāng)SQL語句通過PDO對(duì)象中的prepare()方法,在數(shù)據(jù)庫(kù)服務(wù)器端準(zhǔn)備好之后,如果使用了占位符,就需要在每次執(zhí)行時(shí)替換輸入的參數(shù)??梢酝ㄟ^PDOStatement對(duì)象中的bindParam()方法,把參數(shù)變量綁定到準(zhǔn)備好的占位符上。bindParam()方法的語法格式如下:

boolPDOStatement::bindParam(mixedparameter,mixed&variable[,intdata_type[,intlength[,mixeddriver_options]]])3.綁定參數(shù)SQL語句中使用命名參數(shù)的綁定示例如下所示:3.綁定參數(shù)SQL語句中使用問號(hào)參數(shù)的綁定示例如下所示:4.執(zhí)行SQL語句當(dāng)準(zhǔn)備好SQL語句并綁定了相應(yīng)的參數(shù)后,就可以通過調(diào)用PDOStatement類對(duì)象中的execute()方法,反復(fù)執(zhí)行在數(shù)據(jù)庫(kù)緩存區(qū)準(zhǔn)備好的語句了。execute()方法的語法格式如下:

boolPDOStatement::execute([arrayinput_parameters])說明:參數(shù)input_parameters是可選項(xiàng),傳遞一個(gè)作為輸入?yún)?shù)值的數(shù)組。所有的參數(shù)值都作為“PDO::PARAM_STR”對(duì)待。4.執(zhí)行SQL語句示例9-9:使用預(yù)處理方式(使用命名參數(shù)),插入兩條學(xué)生記錄到學(xué)生信息表student中。4.執(zhí)行SQL語句示例9-10:修改示例9-9,給execute()方法傳遞一個(gè)關(guān)聯(lián)數(shù)組作為其參數(shù)。5.獲取數(shù)據(jù)PDO的數(shù)據(jù)獲取,不管是使用PDO對(duì)象中的query()方法,還是使用prepare()和execute()方法結(jié)合的預(yù)處理語句,只要成功執(zhí)行SELECT查詢,都會(huì)得到相同的結(jié)果集對(duì)象PDOStatement,而且都需要通過PDOStatement類對(duì)象中的方法將數(shù)據(jù)遍歷出來。5.1fetch()方法PDOStatement類中的fetch()方法用來獲取結(jié)果集中下一行的記錄,并將結(jié)果集指針移至下一行,當(dāng)?shù)竭_(dá)結(jié)果集末尾時(shí)返回FALSE。fetch()方法的語法格式如下:

mixedPDOStatement::fetch([intfetch_style[,intcursor_orientation[,intcursor_offset]]])5.1fetch()方法示例9-11:查詢學(xué)生信息表student中班級(jí)ID(dept_id)為1的學(xué)生記錄,并以表格形式輸出查詢結(jié)果。5.2fetchAll()方法fetchAll()方法與fetch()方法類似,但是該方法只需要調(diào)用一次就可以獲取查詢結(jié)果集中的所有行數(shù)據(jù),并賦給一個(gè)二維數(shù)組進(jìn)行返回。fetchAll()方法的語法格式如下:

arrayPDOStatement::fetchAll([intfetch_style[,intcolumn_index]])5.2fetchAll()方法示例9-12:使用fetchAll()方法實(shí)現(xiàn)示例9-11的功能。PPT模板下載:/moban/行業(yè)PPT模板:/hangye/節(jié)日PPT模板:/jieri/PPT素材下載:/sucai/PPT背景圖片:/beijing/PPT圖表下載:/tubiao/優(yōu)秀PPT下載:/xiazai/PPT教程:/powerpoint/

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論