我对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个声誉,所以我决定这样做。答案 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";