2013-07-26 33 views
0

是否有可能在兩個mysql查詢之間終止一個php腳本。在兩個mysql查詢之間終止PHP腳本

例如用戶註冊:

1 INSERT:我會在一個表中輸入基本的一姓,名,地址

第二INSERT:我會進入用戶的散列密碼和另一個表中的鹽

此操作可能需要兩個查詢,並且它們中的任何一個都是無用的記錄。

如果PHP腳本在執行第一個查詢後終止,該怎麼辦? 用戶只會收到服務器錯誤消息,但會生成一個無用的記錄。

任何解決方案?

編輯------ 我的Web主機不提供InnoDB引擎。 只有MyISAM數據支持

+3

你應該看看交易。 – StephenTG

+0

請注意,數據庫引擎必須支持交易:MyISAM不,InnoDB做 –

+0

我的網絡主機不提供InnoDB引擎,這是這個問題的主要原因....任何解決方案MyISAM –

回答

3

使用事務:如果有一個INSERT失敗

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

,你ROLLBACK交易,你會不會被留下了「無用」的記載。

+0

你的答案是正確的,但只支持MyISAM .. –

+0

然後,你將不得不模擬回滾。嘗試插入第一條記錄。嘗試插入第二條記錄。如果任一插入失敗,則從另一個表中刪除相關的行。 –

0

,如果你使用事務,如:

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

一切都被髮送到MySQL服務器一氣呵成,然後跑了作爲一個批處理,這意味着作爲傳輸完成你的腳本能儘快終止,而不是等待每個單獨的查詢。它還具有使用更少的內存和更快的額外好處。