php - 提交或回滚是否在 PHP 的 mysqli 中隐式打开自动提交?

标签 php mysqli commit rollback autocommit

我在 PHP 中使用 mysqli 类进行事务处理,我发现 autocommit() 的文档非常不完整。 我从示例中推断,将 autocommit 设置为 false 会隐式执行“开始事务”。这个对吗? 更重要的是,我没有看到 autocommit 在哪里重置为 true,我认为它应该在事务完成后重置。这会在调用 commit() 或 rollback() 方法时自动发生吗?

最佳答案

它不会隐式执行START TRANSACTION,因为它执行临时事务:http://dev.mysql.com/doc/refman/5.0/en/commit.html

使用autocommit(false),任何时候执行写入查询都必须COMMIT 才能在磁盘上永久更新。从那时起,对于该连接中的所有查询都是如此。对于 autocommit(true),如果您使用 START TRANSACTION,运行更新,运行 COMMIT,然后运行另一个更新,两者 更新将立即应用(即不需要第二次 COMMIT)。

autocommit 永远不会重置为 true,但它仅在每个 session (MySQL session ,而不是 PHP session )中设置。

关于php - 提交或回滚是否在 PHP 的 mysqli 中隐式打开自动提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12585760/

相关文章:

php - 使用 Wordpress Infinite Scroll 加载产品后再次重新初始化 Woocommerce 脚本

php - 使用 Apache 2 和 PHP 5.5 安装 MySQLi

php - 从 SQL 数据库中检索 varbinary 图像

用于使用可选文本快速提交的 Git 别名

git - 如何在另一个 git 仓库中提交一个 git 仓库

php - 如何优化我当前的Mysql查询

php - 我的mysqli插入查询无法正常工作

用于将 MySQL 数据库提交发送到指定电子邮件地址的 PHP 脚本?

git - 如何还原 'git filter-branch -f --env-filter'

javascript - 将更多数据与选择选项关联而不仅仅是 "value"的正确方法是什么