我有三个表,基本上向下级联,如:多次插入查询
- 话题
- 部分(引用主题ID)
- 第(引用主题ID和部分ID)
什么是编写mysql语句创建初始话题/部分/子部分的最佳方法,以便我可以获取新创建的行的id(auto_incremented)并使用它们将它们插入到第二个?
编辑 我使用phpbb3的,如果让说不上来一个巨大的差异,但我通常使用$ DB-sql_query()函数
我有三个表,基本上向下级联,如:多次插入查询
什么是编写mysql语句创建初始话题/部分/子部分的最佳方法,以便我可以获取新创建的行的id(auto_incremented)并使用它们将它们插入到第二个?
编辑 我使用phpbb3的,如果让说不上来一个巨大的差异,但我通常使用$ DB-sql_query()函数
从父母,下线。
然后你可以使用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_id
,SECTION.section_id
和SUBSECTION
是AUTO_INCREMENT,主键列。
您可以使用mysql_insert_id()来获得最后插入ID 。有关更多详细信息,请参见reference。
就我所知,只有一种方法,就是自上而下。
要将小节添加到节中,您必须已经插入节。
要将主题添加到子部分,请确保先添加子部分。
在途中,您将跟踪最后插入的ID(如果您刚刚创建了它),以便将它传递给线下的下一个实体。
我在概念上如何做到这一点,我试图弄清楚如何从auto_increment中获取并保存每个id并传递给下一个查询..我想我应该更新该问题 – 2010-11-10 04:51:21
曼尼得到了具体的答案。 – BeemerGuy 2010-11-10 04:51:57
'$ db-> sql_query($ sql); $ db-> insert_id;'如果你的if($ db instanceof mysqli)' – ajreal 2010-11-10 05:09:57