MYSQL在另一个表中插入主键作为外键

时间:2015-01-06 19:02:13

标签: php mysql foreign-keys primary-key

我正在尝试将不同表中的一些主键作为外键添加到php中的查询中的一个主表。

到目前为止,我得到了:

$result=$mysqli->query("INSERT INTO m_main (M_Id, M_T_Id,  M_U_Id, M_P_Id, M_S_Id, M_Sp_Id, M_Ra_Id, M_F_Id, M_Hp, M_Rss, M_Kommentar)"
                              . "VALUES (DEFAULT, 123,  123, '".$_SESSION['sId']."' , 123, '".$_SESSION['Sp_Id']."', '".$_POST['fragestellung']."', 123,"
                              . "'".$_POST['hp']."', $rss, '".$_POST['kommentar']."')");

我希望用我数据库中其他表中的现有主键替换每个“123”。 这怎么可能?

2 个答案:

答案 0 :(得分:1)

您可以使用INSERT ... SELECT语法。

这样的地方anotherTable是您要插入的另一个表。

$result=$mysqli->query("INSERT INTO m_main (M_Id, M_T_Id,  M_U_Id, M_P_Id, M_S_Id, M_Sp_Id, M_Ra_Id, M_F_Id, M_Hp, M_Rss, M_Kommentar) "
                     . "SELECT (DEFAULT, anotherTable.id,  anotherTable.id, '".$_SESSION['sId']."' , anotherTable.id, '".$_SESSION['Sp_Id']."', '".$_POST['fragestellung']."', anotherTable.id,"
                     . "'".$_POST['hp']."', $rss, '".$_POST['kommentar']."') FROM anotherTable");

如果需要,您还可以使用m_main语句中的WHERE子句将插入的行数限制为SELECT

答案 1 :(得分:1)

很久以前我问过这个问题。最后,我找到了一些时间来回答它,以防任何人遇到同样的问题。不知道为什么我要这么复杂。 Subquerys答案:

$result=$mysqli->query("INSERT INTO m_main (M_Id, M_T_Id,  M_U_Id, M_P_Id, M_S_Id, M_Sp_Id, M_Ra_Id, M_F_Id, M_Hp, M_Rss, M_Kommentar)"
                          . "VALUES (DEFAULT, (SELECT MAX id FROM title), (((AND SO ON...)))