2
我在php中使用mysql扩展,我知道它从PHP 5.5.0开始已被弃用,但我已经使用这个扩展编写了大量代码。 在我看来,像mysql_query提交查询,如果是这意味着它被设置为自动运行,如何设置,因此它不会自动提交。是否mysql_query提交了所有内容
我在php中使用mysql扩展,我知道它从PHP 5.5.0开始已被弃用,但我已经使用这个扩展编写了大量代码。 在我看来,像mysql_query提交查询,如果是这意味着它被设置为自动运行,如何设置,因此它不会自动提交。是否mysql_query提交了所有内容
旧的mysql扩展没有专门用于事务控制的功能,但您可以发出SQL语句来执行您想要的操作。
可以隐含关闭自动提交了一个事务期间,只需启动一个交易:只要你COMMIT或ROLLBACK
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表不支持事务处理,因此无论您的设置如何,它们总是自动提交。与其他几种存储引擎相同,包括MEMORY和CSV。
如果你使用MySQLi,你可以做MySQLi :: autocommit。如果您使用PDO,则可以执行PDO :: beginTransaction。没有人希望帮助保持mysql_ *活着。 – 2013-02-08 22:25:17
我不相信使用mysql_ *方法是可能的,你至少需要升级到mysqli。这可以用最少的努力完成,因为它具有类似于mysql的过程式操作。 – 2013-02-08 22:28:17
是的,看到你可以添加我,所以我会用mysqli – 2013-02-08 22:29:36