這篇文章給大家分享的是有關(guān)PHP中PDO如何進(jìn)行錯(cuò)誤處理的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
十多年的云安網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整云安建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“云安網(wǎng)站設(shè)計(jì)”,“云安網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
在之前的學(xué)習(xí)中我們已經(jīng)學(xué)會(huì)出來(lái)了通過(guò)PDO獲取查詢結(jié)果,那接下來(lái)就要學(xué)習(xí)一下PDO的錯(cuò)誤處理, 在 PDO 中有兩個(gè)獲取程序中錯(cuò)誤信息的方法,分別是 errorCode()
方法和 errorInfo()
方法。接下來(lái)我們就一起來(lái)看一看這兩種方法的應(yīng)用吧。
在了解errorCode() 方法和 errorInfo() 方法是怎樣進(jìn)行錯(cuò)誤處理的方法之前,我們先來(lái)看一下PDO中的錯(cuò)誤處理模式。
PDO的錯(cuò)誤處理模式
在PDO 中一共提供了三種不同的錯(cuò)誤處理模式,它們不僅可以滿足不同風(fēng)格的編程,也可以調(diào)整擴(kuò)展處理錯(cuò)誤的方式。那接下來(lái)就給大家介紹一下這三種不同的錯(cuò)誤處理方式。
PDO::ERRMODE_SILENT
PDO::ERRMODE_SILENT
表示的為默認(rèn)模式,在這種情況下發(fā)生錯(cuò)誤的時(shí)候 ,PDO會(huì)簡(jiǎn)單的設(shè)置一下錯(cuò)誤碼,不會(huì)做其他的任何操作,同時(shí)也可以使用PDO::errorCode()
和 PDO::errorInfo()
這兩個(gè)方法來(lái)檢查語(yǔ)句和檢查數(shù)據(jù)庫(kù)對(duì)象。
我們需要注意的是,如果錯(cuò)誤出現(xiàn)的原因是因?yàn)檎{(diào)用語(yǔ)句對(duì)象,那么可以調(diào)用這個(gè)對(duì)象的PDOStatement::errorCode() 或 PDOStatement::errorInfo() 方法。如果錯(cuò)誤出現(xiàn)的原因是因?yàn)檎{(diào)用數(shù)據(jù)庫(kù)對(duì)象而產(chǎn)生的,那么可以在數(shù)據(jù)庫(kù)對(duì)象上調(diào)用PDOStatement::errorCode() 或 PDOStatement::errorInfo() 這兩種方法。
PDO::ERRMODE_WARNING
PDO::ERRMODE_WARNING 模式可以設(shè)置錯(cuò)誤代碼,當(dāng)然了它除了會(huì)設(shè)置錯(cuò)誤碼之外,PDO還會(huì)發(fā)出一條信息,這條信息是很傳統(tǒng)的E_WARNING 信息。在我們需要調(diào)試或者測(cè)試的時(shí)候,不想中斷程序但是想弄清楚發(fā)生了什么問(wèn)題的時(shí)候。PDO::ERRMODE_WARNING 這個(gè)模式就到了發(fā)揮作用的時(shí)候了
PDO::ERRMODE_EXCEPTION
PDO::ERRMODE_EXCEPTION 模式也可以設(shè)置錯(cuò)誤碼,初看能夠設(shè)置錯(cuò)誤碼之外,PDO還能夠拋出一個(gè) PDOException 異常類(lèi)并設(shè)置它的屬性來(lái)反射錯(cuò)誤碼和錯(cuò)誤信息。PDO::ERRMODE_EXCEPTION 模式在調(diào)試的時(shí)候也是非常有用的,它可以非常快速地指出代碼中有問(wèn)題的潛在區(qū)域,因?yàn)樗鼤?huì)有效地放大腳本中產(chǎn)生錯(cuò)誤的點(diǎn)。
PDO 使用 SQL-92 SQLSTATE
來(lái)規(guī)范錯(cuò)誤碼字符串,不同 PDO 驅(qū)動(dòng)程序負(fù)責(zé)將它們的本地代碼映射為適當(dāng)?shù)?SQLSTATE 代碼。PDO::errorCode()
方法返回一個(gè)單獨(dú)的 SQLSTATE
碼。
如果需要更多這個(gè)錯(cuò)誤的細(xì)節(jié)信息,PDO 還提供了一個(gè) PDO::errorInfo()
方法來(lái)返回一個(gè)包含 SQLSTATE 碼、特定驅(qū)動(dòng)錯(cuò)誤碼以及此驅(qū)動(dòng)的錯(cuò)誤字符串的數(shù)組。
異常模式另一個(gè)非常有用的作用是,相比傳統(tǒng) PHP 風(fēng)格的警告,可以更清晰地構(gòu)建自己的錯(cuò)誤處理,而且比起靜默模式和顯式地檢查每種數(shù)據(jù)庫(kù)調(diào)用的返回值,異常模式需要的代碼/嵌套更少。
接下來(lái)我們通過(guò)示例來(lái)看一下創(chuàng)建 PDO 實(shí)例,并設(shè)置錯(cuò)誤模式。示例如下:
<?php $dsn = 'MySQL:dbname=test;host=127.0.0.1'; $user = 'root'; $pwd = 'root'; try { $pdo = new PDO($dsn, $user, $pwd); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); } ?>
上述示例中便是通過(guò)PDO::setAttribute()
方法設(shè)置錯(cuò)誤模式,除了這種方法設(shè)置錯(cuò)誤模式外,還可以在創(chuàng)建PDO 實(shí)例時(shí)設(shè)置錯(cuò)誤模式
示例如下:
$pdo = new PDO($dsn, $user, $pwd, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
以上便是便是PDO的三種錯(cuò)誤處理模式,接下來(lái)我們看一下PDO::errorCode() 方法。
PDO::errorCode()
方法
PDO::errorCode()
方法大多是用在獲取在操作數(shù)據(jù)庫(kù)句柄時(shí)所發(fā)生的錯(cuò)誤代碼,這些錯(cuò)誤代碼被稱(chēng)為SQLSTATE 代碼。
PDO::errorCode() 方法可以返回一個(gè) SQLSTATE,一個(gè)由 5 個(gè)字母或數(shù)字組成的在 ANSI SQL
標(biāo)準(zhǔn)中定義的標(biāo)識(shí)符。 簡(jiǎn)單可以理解成,一個(gè) SQLSTATE 由前面兩個(gè)字符的類(lèi)值和后面三個(gè)字符的子類(lèi)值組成。
接下來(lái)我們通過(guò)示例來(lái)看一下通過(guò) PDO 連接數(shù)據(jù)庫(kù),并通過(guò) errorCode() 方法獲取錯(cuò)誤代碼。
示例如下:
<?php $dsn = 'mysql:dbname=test;host=127.0.0.1'; $user = 'root'; $pwd = 'root'; try { $pdo = new PDO($dsn, $user, $pwd); $sql = 'select * from user'; $res = $pdo -> query($sql); echo 'errorCode 為:'.$pdo -> errorCode().'<br>'; foreach ($res as $key => $value) { echo '序號(hào):'.$value['id'].'; 姓名:'.$value['name'].'; 年齡:'.$value['age'].'; 性別:'.$value['sex'].'<br>'; } } catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); } ?>
輸出結(jié)果:
上述結(jié)果便是通過(guò) errorCode() 方法獲取錯(cuò)誤代碼。接下來(lái)我們看一下最后一種方法PDO::errorInfo() 方法。
PDO::errorInfo()
方法
PDO::errorInfo()
方法與PDO::errorCode()
方法一樣都是用于獲取操作數(shù)據(jù)庫(kù)句柄時(shí)所發(fā)生的錯(cuò)誤信息。
不同的是errorInfo() 方法的返回值為一個(gè)數(shù)組,它包含了相關(guān)的錯(cuò)誤信息。
接下來(lái)我們通過(guò)示例來(lái)看一下使用 PDO 中的 query 方法完成數(shù)據(jù)查詢操作,并通過(guò) errorInfo() 方法獲取錯(cuò)誤信息。
示例如下:
<?php $dsn = 'mysql:dbname=test;host=127.0.0.1'; $user = 'root'; $pwd = 'root'; try { $pdo = new PDO($dsn, $user, $pwd); // $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = 'select * from userr'; $res = $pdo -> query($sql); echo 'errorInfo 為:<br>'; print_r($pdo -> errorInfo()); } catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); } ?>
上述示例中,我們查詢了一個(gè)不存在的數(shù)據(jù)庫(kù),輸出結(jié)果:
其中我們需要注意的是:PDO 和 PDOStatement 對(duì)象中都有 errorCode() 和 errorInfo() 方法,如果沒(méi)有任何錯(cuò)誤,errorCode() 返回的是 00000;否則就會(huì)返回一些錯(cuò)誤代碼。而 errorInfo() 返回的是一個(gè)數(shù)組,包括 PHP 定義的錯(cuò)誤代碼和 MySQL 的錯(cuò)誤代碼及錯(cuò)誤信息。
感謝各位的閱讀!關(guān)于“PHP中PDO如何進(jìn)行錯(cuò)誤處理”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
分享名稱(chēng):PHP中PDO如何進(jìn)行錯(cuò)誤處理
當(dāng)前鏈接:http://m.kartarina.com/article46/pipghg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、靜態(tài)網(wǎng)站、網(wǎng)站排名、ChatGPT、小程序開(kāi)發(fā)、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)