我正在将我的网站与论坛集成。所以基本上当用户通过我的主网站注册时,我必须在我的用户表和论坛的用户表中插入帐户信息。 但是有一点点机会,第一个查询可能会失败,从而使一个表空了信息,而另一个表则没有。
如果我可以使用一个查询在两个表中插入信息,如果它失败,则不会将任何内容添加到数据库中
答案 0 :(得分:2)
阅读交易。您想要START TRANSACTION
,执行两次INSERT和COMMIT
答案 1 :(得分:1)
数据库知道此类问题的事务的概念。
您在事务中封装了多个数据库语句,并且所有语句都是成功的,或者所有操作都回滚到以前的状态。
使用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();