2010-11-10 156 views
0

我有三个表,基本上向下级联,如:多次插入查询

  • 话题
  • 部分(引用主题ID)
  • 第(引用主题ID和部分ID)

什么是编写mysql语句创建初始话题/部分/子部分的最佳方法,以便我可以获取新创建的行的id(auto_incremented)并使用它们将它们插入到第二个?

编辑 我使用phpbb3的,如果让说不上来一个巨大的差异,但我通常使用$ DB-sql_query()函数

+1

'$ db-> sql_query($ sql); $ db-> insert_id;'如果你的if($ db instanceof mysqli)' – ajreal 2010-11-10 05:09:57

回答

1

从父母,下线。
然后你可以使用LAST_INSERT_ID(),或在SELECT INSERT:

INSERT INTO TOPIC 
    (topic_id, topic) 
VALUES (DEFAULT, $topic); 

INSERT INTO SECTION 
    (topic_id, section) 
SELECT topic_id, $section 
    FROM TOPIC 
WHERE topic = $topic 

INSERT INTO SUBSECTION 
    (section_id, topic_id, subsection) 
SELECT section_id, topic_id 
    FROM SECTION 
WHERE section = $section 

这个例子假设TOPIC.topic_idSECTION.section_idSUBSECTION是AUTO_INCREMENT,主键列。

1

您可以使用mysql_insert_id()来获得最后插入ID 。有关更多详细信息,请参见reference

0

就我所知,只有一种方法,就是自上而下。
要将小节添加到节中,您必须已经插入节。
要将主题添加到子部分,请确保先添加子部分。
在途中,您将跟踪最后插入的ID(如果您刚刚创建了它),以便将它传递给线下的下一个实体。

+0

我在概念上如何做到这一点,我试图弄清楚如何从auto_increment中获取并保存每个id并传递给下一个查询..我想我应该更新该问题 – 2010-11-10 04:51:21

+0

曼尼得到了具体的答案。 – BeemerGuy 2010-11-10 04:51:57