看板 PHP 關於我們 聯絡資訊
※ 引述《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