PHP PDO:显示错误
问题描述:
我是否需要使用try和catch块来显示PHP PDO扩展的错误?PHP PDO:显示错误
例如,使用MySQL可以usally这样做:如果你不想使用try catch语句
if (! $query)
{
die('Oh noes!');
}
答
,你仍然可以使用这种代码:
$query = $db->prepare("SELECT * FROM table");
if(!$query->execute()) {
print_r($query->errorInfo());
}
答
你可以选择通过PDO PDO :: ATTR_ERRMODE有错误呢:
$pdo->setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); // Raise E_WARNING.
$pdo->setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); // Sets error codes.
// or
$pdo->setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // throws exception
答
PDO默认支持它自己的除ion Class,PDOException
。
不应该有任何理由,你为什么不能使用:
try{
$query = $db->prepare(...);
if(!$query){
throw new Exception('Query Failed');
}
}
catch(Exception $e){
echo $e->getMessage();
}
的原因,我只赶上Exception
是因为PDOException
是异常的孩子。抓住父母会抓住所有的孩子。
答
public static function qry($sql) {
try {
$statement = $db_handle->prepare($sql);
$retval = $statement->execute();
if($statement->rowCount() >= 1) {
//do something
}else {
$errors = $statement->errorInfo();
echo $errors[2] . ", " . $errors[1] . " ," . $errors[0];
}
} catch (Exception $e) {
echo $e->getMessage();
}
}
您从不*需要*在任何地方使用try/catch,但如果您想优雅地处理异常,通常是个好主意。 – Matt 2012-08-03 13:03:56