PHP PDO exec() 和 commit() 有什么区别

GRT*_*RTZ 3 php mysql pdo

谁能解释一下 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 之间有什么区别

sal*_*the 5

要了解发生了什么,您需要了解数据库事务

来自维基百科

一个简单的事务通常以 SQL 之类的语言封装在事务中,使用类似于以下的模式向数据库系统发出:

  1. 开始交易
  2. 执行一组数据操作和/或查询
  3. 如果没有发生错误,则提交事务并结束它
  4. 如果发生错误,则回滚事务并结束它

在您的示例代码中,您使用beginTransaction().

然后用 执行一个查询exec()。在这里,您可以执行更多查询。

请注意,在此阶段,事务之外的任何内容都无法看到事务内部查询所做的任何更改。只有在提交事务后,其他任何东西才能看到这些更改。

在事务内部时,还可以回滚,这意味着中止自事务启动以来对数据发生的任何更改。

我想知道哪个阶段数据将永久保存在数据库中。

希望从上面可以清楚地看出,只有在commit()调用之后才会永久保存更改。