mysql - php pdo 預設錯誤模式 和 例外模式,差不多,為什麼弄兩個?

來源:互聯網
上載者:User
關鍵字 php pdo mysql sql
先說 預設模式

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

我做的實驗中,出錯後,會給 $pdo->errorCode() 和 $pdo->errorInfo() 賦值;通過調用他們可以可以 看 錯誤的詳細資料;

然後說例外模式

$pdo->setAttribute(PDO::ATTR_ERRMODE,  PDO::ERRMODE_EXCEPTION);try{}catch(PDOException $e){    echo "執行命令失敗:".$e->getMessage();    exit;}

會執行個體出一個 $e 對象,錯誤資訊儲存在這個屬性裡.

都是有錯誤資訊,為什麼要分兩個屬性?

回複內容:

先說 預設模式

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

我做的實驗中,出錯後,會給 $pdo->errorCode() 和 $pdo->errorInfo() 賦值;通過調用他們可以可以 看 錯誤的詳細資料;

然後說例外模式

$pdo->setAttribute(PDO::ATTR_ERRMODE,  PDO::ERRMODE_EXCEPTION);try{}catch(PDOException $e){    echo "執行命令失敗:".$e->getMessage();    exit;}

會執行個體出一個 $e 對象,錯誤資訊儲存在這個屬性裡.

都是有錯誤資訊,為什麼要分兩個屬性?

/*錯誤模式說明:

◆異常模式:    $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出一個錯誤資訊,打亂了指令碼;    學習調試的時候使用比較好;    真用起來的時候,很多時候判斷不出到底指令碼有沒有出錯;

*/

你太糾結了...這是為了方便使用者,為啥一定要有個為什麼。就像是有些API通過參數可以選擇返回json還是xml,有什麼特別的意義嗎?也是為了方便而已。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.