事务中的多个查询,并使用php提交/回滚


multiple queries in a transaction and committing/rolling back with php

假设我有三个mysql查询:

SELECT customer_id FROM customers WHERE name = 'John'
INSERT INTO quests_on (quest_id, name, quest_points) VALUES ('1', 'John', '15)
UPDATE badges_on SET badge_owned = 'owned' WHERE quest_id = '1'

我如何使用mysql事务来确保所有更改都已完成,否则回滚更改。在php中使用PDO扩展就足够了吗?只是需要弄清楚。我也想知道你是否可以在一个事务中有SELECT查询,如果事务可以采取不同的路径(如如果从SELECT查询的值存在与否)

$db = new PDO($dsn, $user, $password);
$db->beginTransaction();
try {
  // do your queries here, using PDO and $db object
  $db->commit();
} catch (PDOException $e) {
  $db->rollback();
}

更多信息请浏览http://www.php.net/manual/en/book.pdo.php