php 脚本是否有可能在两个 mysql 查询之间终止。
例如用户注册:
第一次插入:我将在一个表中输入基本的名字、姓氏、地址
和
第二次插入:我将在另一个表中输入用户的哈希密码和盐
此操作可能需要两个查询,并且其中任何一个都是无用的记录。
如果 php 脚本在执行第一个查询后终止怎么办?用户只会收到一条服务器错误消息,但会生成一条无用的记录。
任何解决方案??
编辑 ------ 我的 Web 主机不提供 InnoDB 引擎。仅支持 MyISAM
使用事务:
START TRANSACTION;
INSERT INTO foo ...
INSERT INTO bar ...
COMMIT
如果任一 INSERT 失败,您ROLLBACK
将完成交易,您将不会留下“无用”的记录。
如果您使用以下交易:
BEGIN;
INSERT INTO TBL(...) VALUES(...);
INSERT INTO TBL(...) VALUES(...);
COMMIT;
一切都一次性发送到 mysql 服务器,然后作为批处理运行,这意味着您的脚本可以在传输完成后立即终止,而不是等待每个单独的查询。它还具有使用更少内存和更快的额外好处。