我正在使用此查询将数据插入两个不同的表中:
$query1="INSERT INTO node (cid, title) VALUES('$cid','$title')";
$query2="INSERT INTO location (nid, street, city, state) VALUES(LAST_INSERT_ID(),'$address', '$city','$state')";
$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
}
基本上,第一个查询将数据扔到节点表中,节点表又增加了一个 NID 字段。此 NID 用于第二个查询(我的位置表)。
现在我稍微改变了我的网站,我还想将相同的 NID 插入到第三个表中。问题是第二个查询(位置表)也有一个自动增量的 ID 列(LID),所以如果我尝试使用 last_insert_ID,它只会给我 LID 而不是 NID。
我在想我可以在事务之外进行第三次查询,在那里我将查询数据库并获取正确的 nid,但我想将其保留在事务中以防止任何混淆。有任何想法吗?