2014-01-29 67 views
0

我很困惑於sql INSERT INTO。我需要把加入?或INNER JOIN當我要放在不同的表格?INSERT INTO在不同數據庫表中的不同字段

$sqlinsert = "INSERT INTO forum_topic (topic_title, topic_message, thread_id) 
VALUES 
('$topic','$message','$thread_id')"; 

我知道這段代碼只適用於一張表,但不適用於兩張。但是,我想要的是$messagepost_message在其他表中。

forum_topic表中,有POST_IDPOST_MESSAGE日期,並topic_id

但有forum_post表,其中我想把$messagePOST_MESSAGEforum_post

所以,在forum_post表中,有POST_IDPOST_MESSAGE日期,並topic_id

所以我需要JOIN或INNER JOIN?我不知道我應該給他們編碼。 PS:我知道這個問題很難讓你理解。我多麼希望我可以放置圖像,但我沒有10個聲望,所以我決定這樣做。

+0

我這周在一次與一個INSERT語句這是不可能看到的幾十個問題的將數據插入到兩個表。爲什麼不先正確閱讀mysql,然後問問題 – bring2dip

+0

我試着在那裏發表評論,遺憾的是,我沒有任何評論。無論如何,這與我的不同。 – Anthosiast

回答

0

您不能插入到多個表中有一個查詢,但可以使用交易,以確保操作是原子操作。

BEGIN; 
Your queries here 
COMMIT; 

當您需要執行多個相互間的查詢時,其中一些查詢可能會導致錯誤。因此,爲了保持數據庫的一致性,您希望將它們全部或全部執行(您可以閱讀有關ACID)。 MySQL也支持事務,但只支持一些存儲引擎(例如InnoDB,但不支持MyISAM)。

使用的僞代碼如下所示。

start transaction 
try { 
    execute query 1 
    execute query 2 
    ... 
    commit transaction 
catch { 
    rollback transaction 
} 

如果您使用的是PDO,請看這些functions。 在的mysql_query的情況下,你可以使用 mysql_query("START TRANSACTION"); mysql_query("COMMIT"); mysql_query("ROLLBACK");

+0

你能更清楚地解釋一下嗎?我很困惑你在說什麼。 – Anthosiast

+0

我更新了我的答案 –

+0

謝謝。該方法就像魔術一樣工作! – Anthosiast

0

你不使用連接。您對每個表使用不同的查詢。

insert into table1 
(field1, field2, etc) 
values 
(value1, value2, etc); 

insert into table2 
(field1, field2, etc) 
values 
(value1, value2, etc); 
+0

'$的SQLInsert = 「INSERT INTO forum_topic(TOPIC_TITLE,thread_id單) VALUES( '$主題', '$的thread_id') \t INSERT INTO forum_post(POST_MESSAGE) \t VALUES( '$消息')」;'我這樣做它也不能很好地工作。對於重要的注意事項,這個** forum_topic **與** forum_post **有連接,如** topic_id **。我應該怎麼做? – Anthosiast

+0

您必須獲取從第一次插入生成的topic_id,並在第二次插入中使用它。 –

0

要插入多個表,您必須使用多個查詢。

例子:

$sqlinsert1 = "INSERT INTO forum_topic1 (topic_title1, topic_message1, thread_id1) 
VALUES 
('$topic1','$message1','$thread_id1')"; 

$sqlinsert2 = "INSERT INTO forum_topic2 (topic_title2, topic_message2, thread_id2) 
VALUES 
('$topic2','$message2','$thread_id2')"; 

加入用於選擇查詢。

的加入

例子:

​​