主頁(yè) > 知識(shí)庫(kù) > PHP的PDO錯(cuò)誤與錯(cuò)誤處理

PHP的PDO錯(cuò)誤與錯(cuò)誤處理

熱門(mén)標(biāo)簽:地圖標(biāo)注怎么做商戶驗(yàn)證 海南外呼系統(tǒng)方案 兼職做地圖標(biāo)注好賺錢(qián)嗎 400 電話 辦理 打開(kāi)百度地圖標(biāo)注 山東電銷卡外呼系統(tǒng)原理是什么 亳州企業(yè)外呼系統(tǒng) 蘇州外呼系統(tǒng)有效果嗎 智能電銷語(yǔ)音機(jī)器人資訊

PHP PDO 錯(cuò)誤與錯(cuò)誤處理

  • PDO::ERRMODE_SILENT

此為默認(rèn)模式。 PDO 將只簡(jiǎn)單地設(shè)置錯(cuò)誤碼,可使用PDO::errorCode()PDO::errorInfo()方法來(lái)檢查語(yǔ)句和數(shù)據(jù)庫(kù)對(duì)象。如果錯(cuò)誤是由于對(duì)語(yǔ)句對(duì)象的調(diào)用而產(chǎn)生的,那么可以調(diào)用那個(gè)對(duì)象的PDOStatement::errorCode()PDOStatement::errorInfo()方法。如果錯(cuò)誤是由于調(diào)用數(shù)據(jù)庫(kù)對(duì)象而產(chǎn)生的,那么可以在數(shù)據(jù)庫(kù)對(duì)象上調(diào)用上述兩個(gè)方法。

  • PDO::ERRMODE_WARNING

除設(shè)置錯(cuò)誤碼之外,PDO還將發(fā)出一條傳統(tǒng)的E_WARNING信息。如果只是想看看發(fā)生了什么問(wèn)題且不中斷應(yīng)用程序的流程,那么此設(shè)置在調(diào)試/測(cè)試期間非常有用。

  • PDO::ERRMODE_EXCEPTION

除設(shè)置錯(cuò)誤碼之外,PDO還將拋出一個(gè)PDOException異常類并設(shè)置它的屬性來(lái)反射錯(cuò)誤碼和錯(cuò)誤信息。此設(shè)置在調(diào)試期間也非常有用,因?yàn)樗鼤?huì)有效地放大腳本中產(chǎn)生錯(cuò)誤的點(diǎn),從而可以非??焖俚刂赋龃a中有問(wèn)題的潛在區(qū)域(記住:如果異常導(dǎo)致腳本終止,則事務(wù)被自動(dòng)回滾)。

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

創(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 異常。未捕獲異常是致命的。

創(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
add a note add a note

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

您可能感興趣的文章:
  • PHP PDOStatement::debugDumpParams講解
  • PHP PDOStatement::bindValue講解
  • PHP PDOStatement::bindParam講解
  • PHP PDOStatement::bindColumn講解
  • PHP的PDO大對(duì)象(LOBs)
  • PHP的PDO預(yù)處理語(yǔ)句與存儲(chǔ)過(guò)程
  • PDO::setAttribute講解
  • PDO::rollBack講解
  • PDO::quote講解
  • PHP PDOStatement::closeCursor講解

標(biāo)簽:萊蕪 清遠(yuǎn) 溫州 紹興 安康 綏化 呼倫貝爾 金華

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP的PDO錯(cuò)誤與錯(cuò)誤處理》,本文關(guān)鍵詞  PHP,的,PDO,錯(cuò)誤,與,處理,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP的PDO錯(cuò)誤與錯(cuò)誤處理》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于PHP的PDO錯(cuò)誤與錯(cuò)誤處理的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章