午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

PHP數(shù)據(jù)庫抽象層之PDO(五)——錯(cuò)誤與錯(cuò)誤處理

瀏覽:49日期:2022-09-15 16:12:06

PDO 提供了三種不同的錯(cuò)誤處理模式,以滿足不同風(fēng)格的應(yīng)用開發(fā):

PDO::ERRMODE_SILENT此為默認(rèn)模式。 PDO 將只簡單地設(shè)置錯(cuò)誤碼,可使用?PDO::errorCode()?和?PDO::errorInfo()?方法來檢查語句和數(shù)據(jù)庫對(duì)象。如果錯(cuò)誤是由于對(duì)語句對(duì)象的調(diào)用而產(chǎn)生的,那么可以調(diào)用那個(gè)對(duì)象的?PDOStatement::errorCode()?或?PDOStatement::errorInfo()?方法。如果錯(cuò)誤是由于調(diào)用數(shù)據(jù)庫對(duì)象而產(chǎn)生的,那么可以在數(shù)據(jù)庫對(duì)象上調(diào)用上述兩個(gè)方法。PDO::ERRMODE_WARNING除設(shè)置錯(cuò)誤碼之外,PDO 還將發(fā)出一條傳統(tǒng)的 E_WARNING 信息。如果只是想看看發(fā)生了什么問題且不中斷應(yīng)用程序的流程,那么此設(shè)置在調(diào)試/測試期間非常有用。PDO::ERRMODE_EXCEPTION除設(shè)置錯(cuò)誤碼之外,PDO 還將拋出一個(gè)?PDOException?異常類并設(shè)置它的屬性來反射錯(cuò)誤碼和錯(cuò)誤信息。此設(shè)置在調(diào)試期間也非常有用,因?yàn)樗鼤?huì)有效地放大腳本中產(chǎn)生錯(cuò)誤的點(diǎn),從而可以非常快速地指出代碼中有問題的潛在區(qū)域(記住:如果異常導(dǎo)致腳本終止,則事務(wù)被自動(dòng)回滾)。

異常模式另一個(gè)非常有用的是,相比傳統(tǒng) PHP 風(fēng)格的警告,可以更清晰地構(gòu)建自己的錯(cuò)誤處理,而且比起靜默模式和顯式地檢查每種數(shù)據(jù)庫調(diào)用的返回值,異常模式需要的代碼/嵌套更少。

PDO 使用 SQL-92 SQLSTATE 來規(guī)范錯(cuò)誤碼字符串;不同 PDO 驅(qū)動(dòng)程序負(fù)責(zé)將它們的本地代碼映射為適當(dāng)?shù)?SQLSTATE 代碼。?PDO::errorCode()?方法返回一個(gè)單獨(dú)的 SQLSTATE 碼。如果需要更多此錯(cuò)誤的細(xì)節(jié)信息,PDO 還提供了一個(gè)?PDO::errorInfo()?方法來返回一個(gè)包含 SQLSTATE 碼、特定驅(qū)動(dòng)錯(cuò)誤碼以及此驅(qū)動(dòng)的錯(cuò)誤字符串的數(shù)組。

Example #1 創(chuàng)建 PDO 實(shí)例并設(shè)置錯(cuò)誤模式

<?php $dsn = ’mysql:dbname=testdb;host=127.0.0.1’; $user = ’dbuser’; $password = ’dbpass’; try {$dbh = new PDO($dsn, $user, $password);$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) {echo ’Connection failed: ’ . $e->getMessage(); }?>

不管當(dāng)前是否設(shè)置了?PDO::ATTR_ERRMODE?,如果連接失敗,?PDO::__construct()?將總是拋出一個(gè)?PDOException?異常。未捕獲異常是致命的。

Example #2 創(chuàng)建 PDO 實(shí)例并在構(gòu)造函數(shù)中設(shè)置錯(cuò)誤模式

<?php $dsn = ’mysql:dbname=test;host=127.0.0.1’; $user = ’googleguy’; $password = ’googleguy’; /* *使用 try/catch 圍繞構(gòu)造函數(shù)仍然有效,即使設(shè)置了 ERRMODE 為 WARNING, *因?yàn)槿绻B接失敗,PDO::__construct 將總是拋出一個(gè) PDOException 異常。 */ try {$dbh = new PDO($dsn, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING)); } catch (PDOException $e) {echo ’Connection failed: ’ . $e->getMessage();exit; }// 這里將導(dǎo)致 PDO 拋出一個(gè) E_WARNING 級(jí)別的錯(cuò)誤,而不是 一個(gè)異常 (當(dāng)數(shù)據(jù)表不存在時(shí))$dbh->query('SELECT wrongcolumn FROM wrongtable');?>

以上例程會(huì)輸出:

Warning: PDO::query(): SQLSTATE[42S02]: Base table or view not found: 1146 Table ’test.wrongtable’ doesn’t exist in/tmp/pdo_test.php on line 18

標(biāo)簽: PHP
相關(guān)文章:
主站蜘蛛池模板: 在线看亚洲| 真实的国产乱ⅹxxx实拍 | 欧美在线免费看 | 欧美一区二区三区四区五区 | 一级激情片| 黑人巨大精品欧美 | 男人的天堂亚洲 | 1区2区视频| 久久视频在线观看 | 欧美影院一区 | 色综合中文字幕 | 热久久国产精品 | 黄色成人小视频 | 黄色国产视频 | 国产在线视频91 | 国产精品7777 | 91精品国产一区 | 91精品综合久久久 | 国产福利免费视频 | 青青草国产 | 99国产精品久久久久久久成人热 | 国产精品久久久久久久久久 | 成人精品福利 | 久久综合一区二区三区 | 欧美日韩国产中文字幕 | 欧美精品免费一区二区三区 | 老爷们的床奴np高h 好色婷婷 | 李宗瑞91在线正在播放 | 国产3区| 伊人天堂在线 | 国产精品v亚洲精品v日韩精品 | 国产午夜在线视频 | 亚洲免费视频观看 | 妞干网这里只有精品 | 在线免费观看成年人视频 | 午夜色综合 | 日韩h在线 | 一二三区中文字幕 | 成人免费激情视频 | 成人毛片一区二区三区 | 西西午夜视频 |