我有以下情况:
在我的.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/>');
}
这是可行的方法还是更有效的方式?