このクエリを使用して、2つの異なるテーブルにデータを挿入しています。
$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は、2番目のクエリ(私のロケーションテーブル)で使用されます。
Webサイトを少し変更し、同じNIDを3番目のテーブルに挿入したいと思います。問題は、2番目のクエリ(ロケーションテーブル)にもauto_incrementsのID列(LID)があるため、last_insert_IDを使用しようとすると、NIDではなくLIDが表示されるだけです。
トランザクションの外部で3番目のクエリを実行して、データベースにクエリを実行し、正しいnidを取得できると考えていましたが、混乱を防ぐために、トランザクション内に保持したいと考えています。何か案は?