1

同じ列を使用する2つのテーブルを使用しています。1つのテーブルにはテキストが含まれ、もう1つのテーブルには画像が含まれます。適切なテキストが適切な画像とともに表示されるように、列listing_idを使用します。

私の問題は、列listing_idが自動インクリメントであるため、最初のテーブルにテキストを挿入できるクエリへの挿入が可能であり、次に列listing_idを+1できることです。ただし、別のINSERT INTOクエリを使用する2番目のテーブルには、正しいlisting_idがありません。

Listing_idの一部のエントリが削除されたため、2番目のテーブルのlisting_idは常に1番目のテーブルlisting_idの後ろにあります。

列listing_idを参照するにはどうすればよいですか?

4

1 に答える 1

2

参照しているメインテーブルのIDを格納する従属テーブルに、「parent_id」のようなINT列を作成する必要があります。最初のレコードからレコードを選択する場合は、最初のフィールドのauto_incrementフィールドを、2番目のフィールドの「parent_id」に対してテーブルに結合します。

MrSlayerが言及しているように、最初のテーブルの新しく挿入されたIDを使用して、「parent_id」を更新します。通常、一意性を保つために2番目のテーブルに一意のIDフィールドを設定する必要がありますが、最初のテーブルとの関係の一部にすることはできません。

挿入時に最初のテーブルがauto_incrementsするIDを取得する方法がわからない場合は、を使用してくださいmysql_insert_id()

mysql_query("INSERT INTO table1 ...");
echo "Last inserted record_id in table1 was " .  mysql_insert_id();

INSERT INTO table1 (mytextcolumn) VALUES('text');
INSERT INTO table2 (parent_id,image_name) VALUES(LAST_INSERT_ID(),'someimage.png'); 
于 2012-06-22T17:45:22.413 に答える