在 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();
    }
}