• <blockquote id="opgzb"><th id="opgzb"></th></blockquote>
  • <track id="opgzb"></track>
      <table id="opgzb"></table>
    1. <optgroup id="opgzb"><menu id="opgzb"><pre id="opgzb"></pre></menu></optgroup>

              PHP8 PDO錯誤與錯誤處理

              2024-03-22 09:27 更新

              PDO 提供了三種不同的錯誤處理模式,以滿足不同風格的應用開發:

              • PDO::ERRMODE_SILENT在PHP8.0.0之前,此為默認模式。 PDO 將只簡單地設置錯誤碼,可使用 PDO::errorCode() 和 PDO::errorInfo() 方法來檢查語句和數據庫對象。如果錯誤是由于對語句對象的調用而產生的,那么可以調用那個對象的 PDOStatement::errorCode() 或 PDOStatement::errorInfo() 方法。如果錯誤是由于調用數據庫對象而產生的,那么可以在數據庫對象上調用上述兩個方法。
              • PDO::ERRMODE_WARNING除設置錯誤碼之外,PDO 還將發出一條傳統的 E_WARNING 信息。如果只是想看看發生了什么問題且不中斷應用程序的流程,那么此設置在調試/測試期間非常有用。
              • PDO::ERRMODE_EXCEPTION從PHP 8.0.0開始,這是默認模式。 除設置錯誤碼之外,PDO 還將拋出一個 PDOException 異常類并設置它的屬性來反射錯誤碼和錯誤信息。此設置在調試期間也非常有用,因為它會有效地放大腳本中產生錯誤的點,從而可以非??焖俚刂赋龃a中有問題的潛在區域(記?。喝绻惓е履_本終止,則事務被自動回滾)。異常模式另一個非常有用的是,相比傳統 PHP 風格的警告,可以更清晰地構建自己的錯誤處理,而且比起靜默模式和顯式地檢查每種數據庫調用的返回值,異常模式需要的代碼/嵌套更少。See Exceptions for more information about Exceptions in PHP.

              PDO 使用 SQL-92 SQLSTATE 來規范錯誤碼字符串;不同 PDO 驅動程序負責將它們的本地代碼映射為適當的 SQLSTATE 代碼。PDO::errorCode() 方法返回一個單獨的 SQLSTATE 碼。如果需要更多此錯誤的細節信息,PDO 還提供了一個 PDO::errorInfo() 方法來返回一個包含 SQLSTATE 碼、特定驅動錯誤碼以及此驅動的錯誤字符串的數組。

              示例 #1 創建 PDO 實例并設置錯誤模式

              <?php
              $dsn = 'mysql:dbname=testdb;host=127.0.0.1';
              $user = 'dbuser';
              $password = 'dbpass';
              
              $dbh = new PDO($dsn, $user, $password);
              $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
              // This will cause PDO to throw a PDOException (when the table doesn't exist)
              $dbh->query("SELECT wrongcolumn FROM wrongtable");

              以上示例會輸出:

              Fatal error: Uncaught PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'testdb.wrongtable' doesn't exist in /tmp/pdo_test.php:10
              Stack trace:
              #0 /tmp/pdo_test.php(10): PDO->query('SELECT wrongcol...')
              #1 {main}
                thrown in /tmp/pdo_test.php on line 10
              
              注意:不管當前是否設置了 PDO::ATTR_ERRMODE ,如果連接失敗,PDO::__construct() 將總是拋出一個 PDOException 異常。

              示例 #2 創建 PDO 實例并在構造函數中設置錯誤模式

              <?php
              $dsn = 'mysql:dbname=test;host=127.0.0.1';
              $user = 'googleguy';
              $password = 'googleguy';
              
              $dbh = new PDO($dsn, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
              
              // 這里將導致 PDO 拋出一個 E_WARNING 級別的錯誤,而不是 一個異常 (當數據表不存在時)
              $dbh->query("SELECT wrongcolumn FROM wrongtable");

              以上示例會輸出:

              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 9


              以上內容是否對您有幫助:
              在線筆記
              App下載
              App下載

              掃描二維碼

              下載編程獅App

              公眾號
              微信公眾號

              編程獅公眾號

              99在线精品国自产拍不卡_国产 日产 欧美最新_久久综合网丁香五月_嘟嘟韩剧网_卫生间开车视频疼痛有声音