哎呀,大家好??!今天咱們來聊聊PDO::setAttribute這個(gè)東西,是不是很有意思啊?不知道有多少小伙伴聽說過這個(gè)呢?
首先,先簡(jiǎn)單介紹一下PDO吧,PDO是PHP的一個(gè)擴(kuò)展,提供了一個(gè)數(shù)據(jù)庫操作的接口。可能有人會(huì)想問,PDO和我們熟知的mysqli和mysql有什么不同呢?
哎呀,這不是簡(jiǎn)單嗎!PDO是一個(gè)面向?qū)ο蟮腁PI,支持多種類型的數(shù)據(jù)庫,而mysqli和mysql只支持MySQL數(shù)據(jù)庫,而且mysqli是面向?qū)ο蠛兔嫦蜻^程同時(shí)支持的,稍微有一點(diǎn)點(diǎn)復(fù)雜,所以很多人更喜歡使用PDO。
那么,什么是PDO::setAttribute呢?這個(gè)就是PDO對(duì)象的方法,用來設(shè)置PDO的屬性值,也就是我們平常說的配置,其實(shí)就是給PDO對(duì)象設(shè)置一些參數(shù)。這些參數(shù)可以影響數(shù)據(jù)庫連接,錯(cuò)誤處理,prepare語句以及對(duì)結(jié)果集的處理等等。
設(shè)置PDO屬性值有兩種方式,分別是在實(shí)例化PDO對(duì)象的時(shí)候設(shè)置,或者在實(shí)例化之后使用PDO::setAttribute方法設(shè)置。接下來,我們就開始介紹一些常用的PDO屬性及其設(shè)置方法吧!
首先,我們來說一下PDO::ATTR_ERRMODE這個(gè)屬性,這個(gè)屬性用來設(shè)置錯(cuò)誤處理方式,有三種設(shè)置,分別是:
1. PDO::ERRMODE_SILENT,表示不拋出錯(cuò)誤
2. PDO::ERRMODE_WARNING,拋出一個(gè)警告
3. PDO::ERRMODE_EXCEPTION,拋出一個(gè)異常
前兩種都比較簡(jiǎn)單,就不多說了,我們重點(diǎn)說一下第三種。第三種是拋出一個(gè)異常,那么什么是異常呢?簡(jiǎn)單來說,異常就是在代碼執(zhí)行過程中出現(xiàn)的錯(cuò)誤,導(dǎo)致程序無法正常運(yùn)行的情況。
使用異常處理,可以讓代碼更加健壯,能夠更好地處理錯(cuò)誤,而不是直接崩潰。使用PDO::ERRMODE_EXCEPTION的方式,如果 PDO 出現(xiàn)錯(cuò)誤,會(huì)拋出一個(gè)PDOException異常,我們可以通過捕獲異常來處理錯(cuò)誤,這種方式效果非常好。
接下來,再介紹一下PDO::ATTR_EMULATE_PREPARES這個(gè)屬性。默認(rèn)情況下,PDO會(huì)模擬預(yù)處理,也就是PDO會(huì)將所有的SQL語句中的參數(shù)替換成字符串形式來執(zhí)行。對(duì)于龐大的數(shù)據(jù)集合,這個(gè)方法可能會(huì)導(dǎo)致不穩(wěn)定或者性能問題。
PDO::ATTR_EMULATE_PREPARES的值是true或false,默認(rèn)是true,如果開啟false的話,PDO將會(huì)強(qiáng)制預(yù)處理,也就是說即使數(shù)據(jù)傳遞的是字符串,也會(huì)做參數(shù)化處理。這種方式能夠更好的保護(hù)數(shù)據(jù)庫,防范SQL注入攻擊。
最后,我們?cè)賮碚f一下PDO::ATTR_DEFAULT_FETCH_MODE這個(gè)屬性。這個(gè)屬性是用來設(shè)置結(jié)果集的默認(rèn)獲取方式,有三種方式,分別是:
1. PDO::FETCH_ASSOC,獲取關(guān)聯(lián)數(shù)組
2. PDO::FETCH_NUM,獲取數(shù)字索引數(shù)組
3. PDO::FETCH_BOTH,獲取關(guān)聯(lián)和數(shù)字索引數(shù)組
其中,PDO::FETCH_ASSOC獲取關(guān)聯(lián)數(shù)組,也就是我們理解的“鍵值對(duì)”,當(dāng)然最常用的就是這一種了。PDO::FETCH_NUM獲取數(shù)字索引數(shù)組,這種方式通常適用于只關(guān)心某一列的值,而不關(guān)心列名。PDO::FETCH_BOTH獲取關(guān)聯(lián)和數(shù)字索引數(shù)組,也就是同時(shí)獲取到鍵值對(duì)和數(shù)字索引,相對(duì)來說比較多余。
好了,今天我們就到這里吧!希望大家對(duì)PDO::setAttribute有了更深入的了解啦。如果有問題的話,就在評(píng)論區(qū)里面提出來吧,我們一起討論! www.cppxvbw.com.cn 寧波海美seo網(wǎng)絡(luò)優(yōu)化公司 是網(wǎng)頁設(shè)計(jì)制作,網(wǎng)站優(yōu)化,企業(yè)關(guān)鍵詞排名,網(wǎng)絡(luò)營銷知識(shí)和開發(fā)愛好者的一站式目的地,提供豐富的信息、資源和工具來幫助用戶創(chuàng)建令人驚嘆的實(shí)用網(wǎng)站。 該平臺(tái)致力于提供實(shí)用、相關(guān)和最新的內(nèi)容,這使其成為初學(xué)者和經(jīng)驗(yàn)豐富的專業(yè)人士的寶貴資源。
聲明本文內(nèi)容來自網(wǎng)絡(luò),若涉及侵權(quán),請(qǐng)聯(lián)系我們刪除! 投稿需知:請(qǐng)以word形式發(fā)送至郵箱18067275213@163.com
天下沒有免費(fèi)的午餐,有人免費(fèi)就有人付費(fèi)。