在PHP中使用一个mysql查询在两个表中插入信息

时间:2011-02-25 00:07:56

标签: php

我正在将我的网站与论坛集成。所以基本上当用户通过我的主网站注册时,我必须在我的用户表和论坛的用户表中插入帐户信息。 但是有一点点机会,第一个查询可能会失败,从而使一个表空了信息,而另一个表则没有。

如果我可以使用一个查询在两个表中插入信息,如果它失败,则不会将任何内容添加到数据库中

2 个答案:

答案 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();