Php 在连接表中插入值

Php 在连接表中插入值,php,mysql,sql,database,junction-table,Php,Mysql,Sql,Database,Junction Table,我在数据库中有三个表: trips(trip_id(pk), trip_name(unique), user_id(fk)) places(place_id(pk), place_name(unique)) trips_places_asc(trip_id(fk), place_id(fk)) 因为,很多旅行可以有很多地方,我有一个以上的连接表 现在,如果用户在行程中插入地点,这些地点将被添加到places表中,并且行程将与trips\u places\u asc表中的地点相关联 因

我在数据库中有三个表:

 trips(trip_id(pk), trip_name(unique), user_id(fk))

 places(place_id(pk), place_name(unique))

 trips_places_asc(trip_id(fk), place_id(fk))
因为,很多旅行可以有很多地方,我有一个以上的连接表

现在,如果用户在行程中插入地点,这些地点将被添加到
places
表中,并且行程将与
trips\u places\u asc
表中的地点相关联

因此,如果我编写如下查询:

INSERT INTO places (place_name)
VALUES ('XYZ')

INSERT INTO trips (trip_name)
VALUES ('MyTrip')
那么,如何将
trip\u id
place\u id
存储在连接表或关联表
trips\u places\u asc
? 我要问两个问题吗?请帮忙


注意:关于“如此相似”和“如此相似”有很多问题。但是,他们都没有接受答案,甚至连答案都没有。因此,请不要将plz标记为重复

既然您的
地名
旅行名
都是独一无二的,只需执行以下操作:

insert into  trips_places_asc ( trip_id, place_id )
    values (  (select trip_id from trips where trip_name = 'MyTrip'),
              (select place_id from places where place_name = 'XYZ') );
或者,根据要插入的comand(我指的是php命令),可以在插入后返回ID,并使用它运行insert命令

就像:(使用mysqli*函数)

注意,我是直接从我的想法来做这件事的,所以也许你必须调整一些语法错误或者关注准备好的语句

编辑
尽管我应该添加有关此命令的适当文档链接:

因为您的
地名和
行程名都是唯一的,只需执行以下操作:

insert into  trips_places_asc ( trip_id, place_id )
    values (  (select trip_id from trips where trip_name = 'MyTrip'),
              (select place_id from places where place_name = 'XYZ') );
或者,根据要插入的comand(我指的是php命令),可以在插入后返回ID,并使用它运行insert命令

就像:(使用mysqli*函数)

注意,我是直接从我的想法来做这件事的,所以也许你必须调整一些语法错误或者关注准备好的语句

编辑
虽然我应该添加有关此命令的适当文档链接:

谢谢..但是如果我从trip_name中删除unique key呢?那么您将不得不使用第二个选项。我将用一个小例子用php命令编辑答案。等等,你在吗,先生?我在等待您的答复。您好,先生,两个案例都成功运行。但是,我有一个问题:假设我在第一个案例中运行两次查询,那么在关联表中会有多条相同外键的记录。在这种情况下该怎么办?然后,创建一个数组并存储将多次运行查询的每个实体的ID。确保按顺序添加,因为命令
$mysqli->insert\u id
将只返回最后插入的id。因此,在您的模型中,逻辑方法是插入一个trip和许多地方(在我看来),因此您存储tripid并创建一个数组,以放置在该数组中的每个地方id,然后使用每个id重复它插入trip。谢谢..但是如果我从trip_名称中删除唯一的密钥呢?那么您将不得不使用第二个选项。我将用一个小例子用php命令编辑答案。等等,你在吗,先生?我在等待您的答复。您好,先生,两个案例都成功运行。但是,我有一个问题:假设我在第一个案例中运行两次查询,那么在关联表中会有多条相同外键的记录。在这种情况下该怎么办?然后,创建一个数组并存储将多次运行查询的每个实体的ID。确保按顺序添加,因为命令
$mysqli->insert\u id
将只返回最后插入的id。因此,模型中的逻辑方法是插入一个trip和许多地方(在我看来),因此存储tripid并创建一个数组,指向放置在该数组中的地方和每个地方id,然后使用每个id重复插入trip。