将foreach ID插入其他表

时间:2019-02-04 04:32:21

标签: php mysql

我一直在尝试寻找自己想要的东西,但是我仍然对代码感到困惑。我的问题是这样的:

我有3张桌子

 1. table1 (post id, field2, ...) ex. (1, ...)
 2. table2 (tag id, tag) ex. ("1, ...", "2, ...")
 3. table3 (post id, tag id) ex. ("1, 1", "1, 2")

那我该如何在表3中输入ID和标签ID后的值?

PHP代码:

  foreach($tags as $tag){
    $query_insert_tags = mysql_query("INSERT INTO tb_tags (tag) VALUES ('$tag')") or die(mysql_error());
    $query_insert_tag_posts = mysql_query("...") or die(mysql_error());
  }

像这样:

insert into table3 (post id, tag id) 
select post id from table1 and select tag id from table2

不知道这样是否正确,我也不知道如何将值放入数据库

INSERT INTO table3 (post_id, tag_id)
SELECT table1.postid, table2.tagid FROM table3
JOIN table1 ON table3.postid = table1.postid
JOIN table2 ON table3.tagid = table2.tagid

1 个答案:

答案 0 :(得分:0)

如果要在MySQL级别上执行此操作,则必须具有一个在其中一个表的table1和table2之间连接的列。

在没有该列的情况下执行此操作的最佳方法是在插入表1和2时保留最后的插入ID,而不是将它们插入到table3:

$mysqli->query("INSERT INTO table1 ...");
$lastPostId = $mysqli->insert_id;
$mysqli->query("INSERT INTO table2 ...");
$lastTagId = $mysqli->insert_id;
$mysqli->query("INSERT INTON table 3 (post_id, tag_id) VALUES ({$lastPostId}, {$lastTadId})");

如果只想将所有可能的post_id和tag_id插入表3中,则可以执行以下操作:

INSERT INTO table3 (post_id, tag_id)
SELECT post_id, tag_id
FROM table1
JOIN table2 ON 1=1