在 MySQL 数据库中使用 PHP 函数
Using PHP functions with MySQL database
我有一个 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();
}
}
我有一个 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();
}
}