谁能解释一下 PHP PDO 库类中 PDO::commit() 和 PDO::exec() 方法之间的区别。
例如**假设已建立 PDO 连接
$pdo = pdo_connection and params
$pdo->beginTransaction();
$sql = "INSERT INTO USERS VALUES ('u1','u2')";
$pdo->exec($sql);
$pdo->commit();
Run Code Online (Sandbox Code Playgroud)
我想知道哪个阶段数据将永久保存在数据库中。和 commit 和 exec 之间有什么区别
要了解发生了什么,您需要了解数据库事务。
来自维基百科:
一个简单的事务通常以 SQL 之类的语言封装在事务中,使用类似于以下的模式向数据库系统发出:
- 开始交易
- 执行一组数据操作和/或查询
- 如果没有发生错误,则提交事务并结束它
- 如果发生错误,则回滚事务并结束它
在您的示例代码中,您使用beginTransaction().
然后用 执行一个查询exec()。在这里,您可以执行更多查询。
请注意,在此阶段,事务之外的任何内容都无法看到事务内部查询所做的任何更改。只有在提交事务后,其他任何东西才能看到这些更改。
在事务内部时,还可以回滚,这意味着中止自事务启动以来对数据发生的任何更改。
我想知道哪个阶段数据将永久保存在数据库中。
希望从上面可以清楚地看出,只有在commit()调用之后才会永久保存更改。