2012-06-22 98 views
1

我有2個表,我正在使用相同的列;一個表格包含文字,另一個表格包含圖像;他們使用列listing_id,以便正確的文本顯示正確的圖像;引用自動增量列?

我的問題是,由於列listing_id是自動遞增,我的第一臺能夠有一個INSERT INTO查詢即能插入文本,然後+1列listing_id;然而,我使用另一個INSERT INTO查詢的第二個表格沒有正確的listing_id,

因爲listing_id的某些條目已被刪除,這意味着第二個表的listing_id將始終位於第一個表格的listing_id之後;

我怎麼引用該列listing_id?

+0

如果你總是有文字和圖像,你可以將它們組合成一張表,這會讓你的生活變得更輕鬆! – andrewsi

+0

如果你想擁有一個規範化的數據庫,這不是一個好主意。他說imageS,這意味着在第一個表格中可能會有1000個圖像,而不僅僅是一個要保留的圖像。 – GDP

回答

2

你需要創建一個名爲類似的東西存儲了它引用的主表的ID的相關表格中「PARENT_ID」的INT列。當你從第一個選擇記錄時,你會加入第一個字段的auto_increment字段與第二個字段的「parent_id」。

作爲MrSlayer提到,可以使用第一表的新插入的ID來更新「PARENT_ID」。您應該應該通常在第二個表中具有唯一的ID字段唯一性,但它不應該是第一個表的關係的一部分。

如果您不清楚如何獲取插入時第一個表auto_increment的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'); 
+0

或'myslqi_insert_id()'如果你使用的是'MySQLi'界面,你應該或'$ DB-> insert_id'於二OO風格 – TerryE

+0

真......但是,你正在做的插入,讓我倒是它用,並在添加到下面的表中使用它parent_id – GDP

+0

@GDP我沒有看到一個明確的例子是這樣的代碼「$ somevar」mysql_insert_id(),將$ somevar存儲最後一個ID? –