好的,所以我无法理解这个例子:
require_once 'config/config.php';
try {
$dbh = new PDO('mysql:host='.DB_HOST.';dbname='.DB_DATABASE, DB_USER, DB_PASS,array(
PDO::ATTR_PERSISTENT => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
));
} catch (PDOException $e) {
print "Unable to connect!: " . $e->getMessage() . BR;
die();
}
try {
$stmt = $dbh->prepare("SELECT id,email FROM no_table ORDER BY id DESC LIMIT 5");
$stmt->execute();
$stmt->bindColumn(1, $id, PDO::PARAM_INT);
$stmt->bindColumn('email', $email, PDO::PARAM_STR);
while ($row = $stmt->fetch(PDO::FETCH_BOUND)) {
echo $id . "\t" . $email . BR;
}
} catch (PDOException $e) {
echo "Failed: " . $e->getMessage();
}
好的,我连接我的语法错误(没有任何no_table)它抛出异常,但我无法抓住它。在浏览器中我看到了:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S02]:
Base table or view not found: 1146 Table 'no_table' doesn't exist' in 'somepath'
PDOStatement->execute() #1 {main} thrown in some.php on line 15
异常被抛出,我无法抓住它,但是如果我再次尝试在$stmt->execute();
之间抓住它就会抓住它。
我的php版本5.3.14
答案 0 :(得分:9)
您是否曾在此项目中使用过命名空间类? 如果是这样,请尝试使用
\PDOException
而不是
PDOException
在你的“捕获”声明中。 我遇到了类似的问题,这一举措有所帮助。