Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.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/69.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,基本上,我使用php的MYISAM排序规则插入到关系MySQL数据库中 假设一个用户填写一个web表单并发布它以供插入,那么他们提供的所有数据可能属于多个表的一部分 所以我将使用php将值插入一个表,然后插入另一个表,然后插入另一个表,等等 但是假设我在3个表中插入3个数据,但是在第4个插入。。。sql失败了。。。然后,我需要向用户返回一条错误消息,但我还必须撤消所有最后的插入 我可以简单地删除所有过去的插入失败 但是我想知道是否有更简单的方法 以某种方式将sql查询提供给mysql引擎,mys

基本上,我使用php的MYISAM排序规则插入到关系MySQL数据库中

假设一个用户填写一个web表单并发布它以供插入,那么他们提供的所有数据可能属于多个表的一部分

所以我将使用php将值插入一个表,然后插入另一个表,然后插入另一个表,等等

但是假设我在3个表中插入3个数据,但是在第4个插入。。。sql失败了。。。然后,我需要向用户返回一条错误消息,但我还必须撤消所有最后的插入

我可以简单地删除所有过去的插入失败

但是我想知道是否有更简单的方法

以某种方式将sql查询提供给mysql引擎,mysql引擎临时存储数据和sql,并在命令下运行所有语句

有什么想法吗?

首先:

mysql_query("start transaction");
然后,如果您的所有插入都成功工作:

mysql_query("commit");
否则,如果某个地方出现故障

mysql_query("rollback");
我喜欢这个功能

编辑(在评论中指出的以下要点):这只在支持事务的数据库引擎中起作用,MyISAM不是其中之一。我强烈推荐InnoDB,因为它支持行级锁定,使您的查询不太可能遇到锁定。

首先:

mysql_query("start transaction");
然后,如果您的所有插入都成功工作:

mysql_query("commit");
否则,如果某个地方出现故障

mysql_query("rollback");
我喜欢这个功能


编辑(在评论中指出的以下要点):这只在支持事务的数据库引擎中起作用,MyISAM不是其中之一。我强烈推荐InnoDB,因为它支持行级锁定,使您的查询不太可能遇到锁定。

希望这对您有所帮助:

希望这对您有所帮助:

尝试使用SET AUTOCOMMIT=0禁用自动提交

另外,您必须使用支持InnoDB表的最新MySQL版本

请注意,在执行此操作时,您需要始终使用提交来保存更改

START TRANSACTION;
UPDATE table SET summmary='whatever' WHERE type=1;
COMMIT;
PHP确实支持事务,对每个命令使用单独的查询语句

 mysql_query("BEGIN");
mysql_query("COMMIT");
mysql_query("ROLLBACK");  

尝试使用SET AUTOCOMMIT=0禁用自动提交

另外,您必须使用支持InnoDB表的最新MySQL版本

请注意,在执行此操作时,您需要始终使用提交来保存更改

START TRANSACTION;
UPDATE table SET summmary='whatever' WHERE type=1;
COMMIT;
PHP确实支持事务,对每个命令使用单独的查询语句

 mysql_query("BEGIN");
mysql_query("COMMIT");
mysql_query("ROLLBACK");  
朋友,, 如果要在任何失败步骤后执行回滚,则不能使用MYISAM存储引擎。。。如果您可以使用InnoDB作为mysql存储引擎,那么我可以回答您在这里提出的问题。。。不仅如此,我可以告诉你你必须用php写什么,对于mysql,并可以分享一些示例代码,这些代码将明确你的概念,然后你会很容易。。。但首先,您必须向我确认,您是否可以将表存储引擎更改为InnoDB。。。??如果你想改变,但不知道如何才能改变你的存储引擎,那么你应该随时问我。。。我会尽我最大的努力

如果你想问我任何问题,只需编辑此答案并在最后添加你的问题。。。甚至你也可以添加评论。。。 祝你好运朋友…

朋友, 如果要在任何失败步骤后执行回滚,则不能使用MYISAM存储引擎。。。如果您可以使用InnoDB作为mysql存储引擎,那么我可以回答您在这里提出的问题。。。不仅如此,我可以告诉你你必须用php写什么,对于mysql,并可以分享一些示例代码,这些代码将明确你的概念,然后你会很容易。。。但首先,您必须向我确认,您是否可以将表存储引擎更改为InnoDB。。。??如果你想改变,但不知道如何才能改变你的存储引擎,那么你应该随时问我。。。我会尽我最大的努力

如果你想问我任何问题,只需编辑此答案并在最后添加你的问题。。。甚至你也可以添加评论。。。
祝你好运friend…

MyISAM不支持事务,数据库必须转换为InnoDB或类似版本。但我同意,这是解决办法。真的吗?哇,太糟糕了。。。好消息是,我使用InnoDB进行行级锁定:D我将使用该信息编辑我的答案所有php mysql_*函数都将正常工作,直到我使用
mysql_查询(“提交”)?差不多就是这样。MyISAM不支持事务,数据库必须转换为InnoDB或类似的数据库。但我同意,这是解决办法。真的吗?哇,太糟糕了。。。好消息是,我使用InnoDB进行行级锁定:D我将使用该信息编辑我的答案所有php mysql_*函数都将正常工作,直到我使用
mysql_查询(“提交”)?差不多就是这样。内部不是很“正常”,但外部是这样。有一个类似的帖子和你的一样。。。有一个类似于你的帖子。。。