MYSQL、PHP插入数据库中的多个表

2024-02-19

我正在尝试将信息插入数据库中的多个表中,我已设法使用以下方法使其正常工作:

  $query = "INSERT INTO users (grp, email, college_id, tutor, year, password, register_date) VALUES ('$g', '$e', '$ci', '$tu', '$y', PASSWORD('$p'), NOW() )";
  $query2 = "INSERT INTO unit_26 (college_id) VALUES ('$ci')";
  $result = mysql_query ($query); // Run the Query Now woooo. 
  $result2 = mysql_query ($query2); // Run the Query Now woooo. 
  if ($result) { // If it Ran OK.

虽然它有效并且信息被添加到两个表中,但我只是想知道是否有人有更好的方法来做到这一点,或者这种方法是错误的?


由于这两个插入是独立执行的,因此同时运行的另一个程序可能会看到数据库处于第一个插入完成但第二个插入未完成的状态。

这是否是一个问题取决于应用程序逻辑。就您的情况而言,如果没有其他信息,很难判断。可能不会。涉及两个账户的金融交易就是一个例子,其中is一个问题:你不希望所有账户余额的总和在任何时候都是错误的。

如果您认为需要这样做,则可以以牺牲性能为代价来使操作原子化:另一个程序将在第一次插入之前或第二次插入之后查看数据库。它的工作原理如下:

$result = FALSE;
if (mysql_query('BEGIN')) {
    if (mysql_query($query1) &&
        mysql_query($query2))
        $result = mysql_query('COMMIT'); // both queries looked OK, save
    else
        mysql_query('ROLLBACK'); // problems with queries, no changes
}

存储引擎必须支持事务,即它必须是InnoDB http://dev.mysql.com/doc/refman/5.5/en/ansi-diff-transactions.html。否则这将默默地不起作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MYSQL、PHP插入数据库中的多个表 的相关文章