Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.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/57.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查询_Php_Mysql - Fatal编程技术网

Php 提交后无法执行任何MySQL查询

Php 提交后无法执行任何MySQL查询,php,mysql,Php,Mysql,我使用START TRANSACTION执行一些MySQL查询,但在执行COMMIT之后,以下查询不会在数据库中生效 使用mysqli_query以相同的顺序执行以下查询: 设置名称utf8 设置自动提交=0 启动事务 在表1中插入a、b值1,2 在表2中插入c、d值1,1 在表2中插入c、d值2,1 承诺 在表3 e中插入f值9,7 我认为问题在于说明书的顺序。 尝试在最后执行commit SET names utf8 SET AUTOCOMMIT=0 START TRANSACTION

我使用START TRANSACTION执行一些MySQL查询,但在执行COMMIT之后,以下查询不会在数据库中生效

使用mysqli_query以相同的顺序执行以下查询:

设置名称utf8

设置自动提交=0

启动事务

在表1中插入a、b值1,2

在表2中插入c、d值1,1

在表2中插入c、d值2,1

承诺


在表3 e中插入f值9,7 我认为问题在于说明书的顺序。 尝试在最后执行commit

SET names utf8

SET AUTOCOMMIT=0

START TRANSACTION

INSERT INTO table1 (a, b) VALUES (1,2) ;

INSERT INTO table2 (c, d) VALUES (1,1) ;

INSERT INTO table2 (c, d) VALUES (2,1) ;

INSERT INTO table3 (e, f) VALUES (9,7) ;

COMMIT

问题是因为设置AUTOCOMMIT=0,所以我必须在每次查询后查询COMMIT


因此,解决方案是要么将set AUTOCOMMIT设置为1,要么在每次查询后使用COMMIT。

最后一个查询应该在提交后执行,因为无论是提交还是回滚都必须执行。很抱歉,我在问题中没有说清楚。要显式禁用自动提交模式,请使用以下语句:SET autocommit=0;通过将autocommit变量设置为零禁用autocommit模式后,对事务安全表(如InnoDB、BDB或NDBCLUSTER的表)的更改不会立即永久化。必须使用“提交”将更改存储到磁盘,或使用“回滚”忽略更改。