使用PHP函数与MySQL数据库



我有一个PHP函数:

function insert_data($key, $value) {
$stmt = $dbh->prepare('INSERT INTO table (key, value) VALUES (:key, :value)');
$params = [
':key' => $key,
':value' => $value
];
$stmt->execute($params);
}

然后在我的代码中多次调用这个函数:

$name = insert_data('Name', 'Joe');
$email = insert_data('Email', 'example@example.com');

但是,我想确保如果一个事务失败,它不会提交其他所有事务。$dbh->beginTransaction();在调用函数和$dbh->commit();在函数工作之后,还是我需要做其他事情?

启用异常,然后在出现故障时使用try/catch回滚事务。

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try {
$dbh->beginTransaction();
$name = insert_data('Name', 'Joe');
$email = insert_data('Email', 'example@example.com');
$dbh->commit();
} except (Exception $e) {
if ($dbh->inTransaction()) {
$dbh->rollBack();
}
}

最新更新