INSERT INTO不同数据库表中的不同字段

时间:2014-01-29 13:14:33

标签: php mysql sql

我对sql INSERT INTO很困惑。我需要输入 JOIN 吗?或者 INNER JOIN ,当我打算进入不同的桌子时?

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

我知道此代码仅适用于一个表但不适用于两个表。但是,我想要的是$message到其他表格中的 post_message

forum_topic 表中,有 post_id post_message 日期 topic_id

但是 forum_post 表中我想将$message放入 forum_post 中的 post_message

因此,在 forum_post 表中,有 post_id post_message 日期 topic_id

所以我需要加入还是内部加入?我不知道应该编写哪一个。

PS:我知道你很难理解这个问题。我多么希望我可以放置图像,但我没有10个声誉,所以我决定这样做。

3 个答案:

答案 0 :(得分: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");

答案 1 :(得分:0)

您不使用联接。您对每个表使用单独的查询。

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

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

答案 2 :(得分: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')";

加入用于选择查询。

加入示例:

$sqlselect = "SELECT * FROM forum_topic 
Join table2 on thread_id = table2id
WHERE topic_title = $topic";