为多个表编写INSERT查询

时间:2014-06-29 01:18:11

标签: php mysql database schema

我正在编写一个配方数据库应用程序,我已经对数据库架构进行了排序,但我并没有努力弄清楚要将所需的查询插入到数据库中。

我有3张桌子

成分 ingredients_id ...

配方 recipe_id ......

食谱(数据透视表) ingredients_id recipe_id

但我的理解是你一次只能将数据插入一个表中。

这就是我的问题所在。如果我有一个表格来输入食谱,我如何添加分配到3个表格的食谱?我使用多个查询吗?如果是这样,我怎么能保证他们会匹配。

很抱歉,如果这听起来像一个愚蠢的问题,但它正在煎炸我的大脑,请提前感谢您的反馈。

祝你好运

1 个答案:

答案 0 :(得分:0)

通过将常用值分配给相应的列,可以保证行彼此相关。

如果您已决定将recipe_id中的recipes列定义为AUTO_INCREMENT,并且插入了为该列指定了生成值的行,则可以使用LAST_INSERT_ID()函数检索分配给列的值

INSERT INTO recipes (recipe_id, col2, col3) VALUES (NULL, 'fee', 'fi');

如果insert语句成功,你可以通过执行如下语句来检索分配给recipe_id列的值(在同一个MySQL会话中,在执行任何其他语句之前):

SELECT LAST_INSERT_ID() AS recipe_id;

注意:某些MySQL客户端库具有为您执行此操作的方法/函数,因此您可以检索该值,而无需在代码中准备和执行另一个SQL语句,例如。

PDO::lastInsertId 参考:http://www.php.net/manual/en/pdo.lastinsertid.php

mysqli::$insert_id 参考:http://www.php.net/manual/en/mysqli.insert-id.php

然后,您可以将INSERT中返回的值提供给关联表,例如

INSERT INTO recipe_ingredient (recipe_id, ... ) VALUES ( 42, ... )