作者roga (任性)
看板PHP
標題Re: [請益] 有關PDO例外捕獲的問題
時間Wed Apr 13 16:49:12 2011
※ 引述《athelok (連米)》之銘言:
: 我的code是這樣
: $db = new PDO($dsn, 'user', 'pw');
: $std = $db -> prepare(一段錯誤的SQL);
: try
: {
: $std -> execute()
: }
: catch(PDOException $e)
: {
: var_dump($e -> getTrace());
: }
: 也就是說我拿一段錯誤的SQL去執行
: 但catch卻沒有捕獲到任何錯誤
: 想請問一下有人知道PDOException是否還沒辦法捕獲到execute()的errorInfo()?
你要 set setAttribute
$dsn = "mysql:host=$db_host;dbname=$db_name";
$dbh = new PDO($dsn, $db_user, $db_password);
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
這樣你的 SQL 有問題就會 throw Exception
PDO 預設在 ATTR_ERRMODE 是 ERRMODE_SILENT
或者是用
$sth->errorInfo()
$dbh->errorInfo()
這兩個去拿錯誤訊息也可以。
--
The Internet: where men are men, women are men, and children are FBI agents.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 202.89.121.16
推 ooopooo:版上太少PDO相關討論了!不知道除了官網 04/14 11:23
→ ooopooo:哪邊還有相關PDO討論或是教學? 04/14 11:24
→ ooopooo:補推這篇 04/14 11:24
→ roga:官網範例的確少了點,有問題可以提出來互相討論 :D 04/14 14:48
推 athelok:太厲害了 感謝感謝! 04/14 23:21
→ athelok:不用errorInfo是因為還要判斷很麻煩 04/14 23:21
→ athelok:如果可以throw就直接寫在class裡面我就不用每次寫if(!xxx) 04/14 23:22
推 athelok:感謝roga大大 您的文章總是讓我受益良多 04/14 23:30