2012-06-22 73 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? –