mysql - PHP中 PDO 的錯誤模式,ERRMODE_EXCEPTION 和 ERRMODE_WARNING 區別是什麼?

來源:互聯網
上載者:User
關鍵字 php sql mysql
PDO::ERRMODE_EXCEPTION PDO::ERRMODE_WARNING 區別是什麼?

我怎麼看了以後,覺得這倆除了反饋資訊的格式不一樣外,別的看起來都一樣?

就是講解的時候有個"拋出"一詞,誰可以簡單的跟我說說什麼區別?

回複內容:

PDO::ERRMODE_EXCEPTION PDO::ERRMODE_WARNING 區別是什麼?

我怎麼看了以後,覺得這倆除了反饋資訊的格式不一樣外,別的看起來都一樣?

就是講解的時候有個"拋出"一詞,誰可以簡單的跟我說說什麼區別?

錯誤模式說明:

  • 異常模式:
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

這個模式需要配合 try 使用 :
一旦出錯,就會:

  1. 建立一個對象,$e 也可以隨便命名,從 $e->getMessage() 擷取錯誤資訊;

  2. 採取動作;

try{        要執行的命令...}catch(PDOException $e){    echo "執行命令失敗:".$e->getMessage();    失敗後的動作...}

這個其實等於 預設模式if($pdo->errorInfo()[2]) ...

建立PDO的時候,為什麼也用 try?
因為這時候連PDO對象都沒有,所以也不能設定錯誤模式,所以可以用try,
一旦PDO建立成功,錯誤模式就成了 預設模式,也就不能用try了.

  • 預設模式:

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);

這個出錯,會給 $pdo->errorCode()$pdo->errorInfo()[2] 賦值;

可以用 if($pdo->errorInfo()[2])if($pdo->errorCode()) 判斷指令碼是不是出錯.

如果不出錯,上面都是空的;

  • 警告模式:

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

這個會echo出一個錯誤資訊,打亂了指令碼;
學習調試的時候使用比較好;
真用起來的時候,很多時候判斷不出到底指令碼有沒有出錯;

請注意PHP的錯誤等級一文。

Warning層級的錯誤,會直接顯示在頁面上,且無法自行根據錯誤處理相關的商務邏輯。
Exception則是拋出一個可以被捕獲的Exception對象,可以擷取到詳細的異常資訊。

try {    $stmt = $pdo->prepare("select * from id = :id");    // PGSQL嚴格限制資料類型,serial欄位使用字串欄位進行匹配將會出錯    $stmt->bindValue(':id','string',PDO::PARAM_STR);    $stmt->execute();    $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);} catch (PDOException $e) {    // PDO執行出錯時執行    // 可以捕獲到PDO拋出的異常,可以擷取到詳細的錯誤碼,錯誤描述,哪個檔案第幾行出錯,本次請求中所有執行的檔案等等    var_dump($e);}
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.