实际的列名是 account 和 passwd,所以第二个查询将失败,但第一个查询仍然插入到数据库中。
$sql1 = "INSERT INTO users (account, passwd) VALUES ('account+1', 'password+1')";
$sql2 = "INSERT INTO users (account, password) VALUES ('account+2', 'password+2')";
try {
$db->beginTransaction();
$db->query($sql1);
$db->query($sql2);
$db->commit();
} catch (Exception $e) {
$db->rollback();
die($e->getMessage());
}
事务成功启动,没有错误,问题是它不回滚,无论查询失败,总是插入行。
MySQL 版本 5.5.25,表类型为 InnoDB。