Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql\u查询是否提交了所有内容_Php_Mysql_Commit - Fatal编程技术网

Php mysql\u查询是否提交了所有内容

Php mysql\u查询是否提交了所有内容,php,mysql,commit,Php,Mysql,Commit,我在php中使用mysql扩展,我知道它在PHP5.5.0中已被弃用,但我有很多使用此扩展编写的代码。 在我看来,mysql\u query提交了查询,如果是,这意味着它被设置为自动提交,那么如何设置它不自动提交 旧的mysql扩展没有专门用于事务控制的函数,但是您可以发出SQL语句来执行您想要的操作 只需启动一个事务,即可在一个事务的持续时间内隐式关闭自动提交: mysql_query("START TRANSACTION"); 一旦提交或回滚,自动提交模式将返回默认模式 mysql_que

我在php中使用mysql扩展,我知道它在PHP5.5.0中已被弃用,但我有很多使用此扩展编写的代码。
在我看来,mysql\u query提交了查询,如果是,这意味着它被设置为自动提交,那么如何设置它不自动提交

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

只需启动一个事务,即可在一个事务的持续时间内隐式关闭自动提交:

mysql_query("START TRANSACTION");
一旦提交或回滚,自动提交模式将返回默认模式

mysql_query("COMMIT"); // or ROLLBACK
通过设置会话变量,可以关闭整个会话的自动提交:

mysql_query("SET autocommit=0");
或者在MySQL实例上全局更改它,以便更改所有会话的默认值:

mysql_query("SET GLOBAL autocommit=0");
或者通过编辑/etc/my.cnf将其设置为在MySQL服务启动时更改全局设置:

[mysqld]
autocommit=0
如果您使用的是MySQL 5.1,那么您必须以稍微不同的方式执行此操作:

[mysqld]
init_connect='SET autocommit=0'

您可能已经知道了,但需要重复的是,只有在使用InnoDB表时,事务才有意义。MyISAM表不支持事务,因此无论您的设置如何,它们总是自动提交。与其他几个存储引擎一样,包括内存和CSV。

如果您使用的是MySQLi,您可以执行MySQLi::autocommit。如果您使用的是PDO,则可以执行PDO::beginTransaction。没有人愿意帮助保持mysql_*的活力。我认为使用mysql_*方法是不可能的,你至少需要升级到mysqli。这可以用最小的努力完成,因为它有类似于mysql的过程式操作。是的,你可以只添加i,所以我将使用mysqli将mysql转换为mysqli比只添加i稍微复杂一点。。。。