作者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
1F:推 ooopooo:版上太少PDO相关讨论了!不知道除了官网 04/14 11:23
2F:→ ooopooo:哪边还有相关PDO讨论或是教学? 04/14 11:24
3F:→ ooopooo:补推这篇 04/14 11:24
4F:→ roga:官网范例的确少了点,有问题可以提出来互相讨论 :D 04/14 14:48
5F:推 athelok:太厉害了 感谢感谢! 04/14 23:21
6F:→ athelok:不用errorInfo是因为还要判断很麻烦 04/14 23:21
7F:→ athelok:如果可以throw就直接写在class里面我就不用每次写if(!xxx) 04/14 23:22
8F:推 athelok:感谢roga大大 您的文章总是让我受益良多 04/14 23:30