2014-01-14 35 views
1

解釋我的問題的最佳方式是使用示例保持多個腳本中的PDO提交或回滾激活

說我有3個腳本;

第一個是表單,在提交時它轉到第二個處理POST變量的腳本,並將它們插入到此頁面上的DB /腳本中,這裏有另一個提交按鈕,它將您帶到第三個頁面,查詢終於提交給DB

這是可能的嗎?

或做提交/回滾必須在同一個腳本?

感謝

+1

不是在幾個腳本中(或者實際上,如果您在保持連接的有狀態應用程序中調用,這將非常難以設置和維護,但並非不可能)。但簡單是最好的:在數據庫的第一個和第二個腳本中不要做任何事情。將數據存儲在會話中,如果您只希望在第三次提交數據:將數據存儲在會話或類似數據中,並在第三個腳本中運行所有查詢。 – Wrikken

回答

2

是,提交/回滾必須在同一要求啓動事務。

另一種看待這種情況的方式是事務必須在相同的數據庫連接中解析,並且數據庫連接(如任何其他資源)不能在多個PHP請求中生存。

作爲@Wrikken評論,您可以將未提交的數據保存在會話數據或其他非數據庫保存空間(例如memcached)中。

另一個選擇是在每個請求期間保存並提交數據庫中的數據,但是在表中添加一列以獲取數據的狀態。因此,它將在數據庫事務方面進行實際承諾,但在完成處理第三個腳本之前,它將被標註爲不完整。

我已經實現了這樣的系統,例如「購物車」風格的信息。這也有助於運行日常的cron作業來刪除舊的,未完成的數據。因爲不可避免地,人們有時會放棄他們正在進行的工作,並且永遠不會走到最後的一步。

+0

很酷。謝謝。認爲可能是這種情況。是的,將放入數據庫,具有額外的交易狀態欄。謝謝 – Lan