0

php 脚本是否有可能在两个 mysql 查询之间终止。

例如用户注册:

第一次插入:我将在一个表中输入基本的名字、姓氏、地址

第二次插入:我将在另一个表中输入用户的哈希密码和盐

此操作可能需要两个查询,并且其中任何一个都是无用的记录。

如果 php 脚本在执行第一个查询后终止怎么办?用户只会收到一条服务器错误消息,但会生成一条无用的记录。

任何解决方案??

编辑 ------ 我的 Web 主机不提供 InnoDB 引擎。仅支持 MyISAM

4

2 回答 2

3

使用事务:

START TRANSACTION;
INSERT INTO foo ...
INSERT INTO bar ...
COMMIT

如果任一 INSERT 失败,您ROLLBACK将完成交易,您将不会留下“无用”的记录。

于 2013-07-26T19:42:43.147 回答
0

如果您使用以下交易:

BEGIN;
INSERT INTO TBL(...) VALUES(...);
INSERT INTO TBL(...) VALUES(...);
COMMIT;

一切都一次性发送到 mysql 服务器,然后作为批处理运行,这意味着您的脚本可以在传输完成后立即终止,而不是等待每个单独的查询。它还具有使用更少内存和更快的额外好处。

于 2013-07-26T19:53:25.010 回答