mysql_query是否提交了所有内容

Bor*_*lis 2 php mysql commit

我在PHP中使用mysql扩展,我知道它从PHP 5.5.0开始被弃用,但是我已经使用这个扩展编写了很多代码.在我看来像mysql_query提交查询,如果是这样意味着它设置为自动提交,如何设置所以它不自动提交.

Bil*_*win 5

旧的mysql扩展没有专门用于事务控制的函数,但您可以发出SQL语句来执行您想要的操作.

您可以通过启动事务隐式关闭一个事务持续时间的自动提交:

mysql_query("START TRANSACTION");
Run Code Online (Sandbox Code Playgroud)

一旦COMMIT或ROLLBACK,自动提交模式将返回默认值.

mysql_query("COMMIT"); // or ROLLBACK
Run Code Online (Sandbox Code Playgroud)

您可以通过设置会话变量来关闭整个会话的自动提交:

mysql_query("SET autocommit=0");
Run Code Online (Sandbox Code Playgroud)

或者在MySQL实例上全局更改它,以便更改所有会话的默认值:

mysql_query("SET GLOBAL autocommit=0");
Run Code Online (Sandbox Code Playgroud)

或者通过编辑/etc/my.cnf将其设置为在MySQL服务启动时更改全局设置:

[mysqld]
autocommit=0
Run Code Online (Sandbox Code Playgroud)

如果您使用MySQL 5.1,则必须以稍微不同的方式执行此操作:

[mysqld]
init_connect='SET autocommit=0'
Run Code Online (Sandbox Code Playgroud)

您可能已经知道,但重复的是,如果您使用InnoDB表,事务只会意味着什么.MyISAM表不支持事务,因此无论您的设置如何,它们始终都是自动提交的.与其他几个存储引擎相同,包括MEMORY和CSV.