我正在將我的網站與論壇進行整合。所以基本上當用戶通過我的主網站註冊時,我必須在我的用戶表和論壇的用戶表中插入帳戶信息。 但是,有一個小小的機會,第一個查詢可能會失敗,從而使一個表空白的信息,而另一個表。在兩張表中插入信息,並在PHP中使用一個mysql查詢
如果我可以插入一個查詢兩個表中的信息,應該失敗什麼都不會被添加到數據庫
我正在將我的網站與論壇進行整合。所以基本上當用戶通過我的主網站註冊時,我必須在我的用戶表和論壇的用戶表中插入帳戶信息。 但是,有一個小小的機會,第一個查詢可能會失敗,從而使一個表空白的信息,而另一個表。在兩張表中插入信息,並在PHP中使用一個mysql查詢
如果我可以插入一個查詢兩個表中的信息,應該失敗什麼都不會被添加到數據庫
上交易閱讀起來。你想START TRANSACTION
,做兩個插件,以及COMMIT
數據庫知道交易此類問題的概念。
您在事務中封裝了多個數據庫語句,並且所有語句都成功或者所有操作都回滾到之前的狀態。
PHP和mysqli的,你可以做這樣的事情:
$conn = new mysqli("localhost", "my_user", "my_password", "my_db");
// turn off autocommit = beginn a transaction
$conn->autocommit(false);
// your db actions: multiple inserts ... what you want
$mysqli->query("insert into table1....");
$mysqli->query("insert into table2....");
// commit all changes and close connection
$conn->commit();
$conn->close();
在MySQL中(可能mysqli的爲好)提供的交易,什麼都在使用它的壞點?它是否支持auto_increment? – dikidera 2011-02-25 00:12:25
yes確實如此:http://dev.mysql.com/doc/refman/5.0/en/commit.html – Stofke 2011-02-25 00:14:17
是的,交易和自動遞增都可用。 – Satya 2011-02-25 23:01:58