尝试在另一个try catch块中捕获块

时间:2014-12-22 00:37:15

标签: php exception pdo

我有以下情况:

在我的.db.inc.php文件中,我正在连接数据库:

try {
    $dbh = new PDO('mysql:host=' . HOST . ';dbname=' . DATABASE , USER_DB, PASSWORD_DB);
}
catch (PDOException $e) {
    die('Error!: ' . $e->getMessage() . '<br/>');
}

然后我在需要连接之前运行一些函数,但我知道连接已建立,因为我没有抛出错误。

现在我需要更新我的数据库:

include('.db.inc.php');
try {

/...
$sql = "UPDATE de_request_products SET report_id = :report_id WHERE request_id = :request_id";
$stmt = $dbh->prepare($sql);
$stmt->bindValue(':report_id', $report_number, PDO::PARAM_STR);
$stmt->bindValue(':request_id', $report_request_number, PDO::PARAM_STR);
$stmt->execute();
}
catch (PDOException $e){
die('Error!: ' . $e->getMessage() . '<br/>');
}

如果上面写的try块失败,我想在Exception Handler中有一个try catch块来更新数据库:

// ....
catch (PDOException $e){
  try {

   //SEND EMAIL AND

     $sql = "INSERT INTO de_failed_requests (datum, reason) VALUES (:datum, :reason)";
     $stmt = $dbh->prepare($sql);
     $stmt->bindValue(':datum', $date, PDO::PARAM_STR);
     $stmt->bindValue(':reason', $e->getMessage(), PDO::PARAM_STR);
     $stmt->execute();
   } catch (PDOException $f) {
     die('NOTHING WORKS AT ALL!'. $f->getMessage());
     }
     die('Error!: ' . $e->getMessage() . '<br/>');
 }

这是可行的方法还是更有效的方式?

0 个答案:

没有答案