我正在编写一个配方数据库应用程序,我已经对数据库架构进行了排序,但我并没有努力弄清楚要将所需的查询插入到数据库中。
我有3张桌子
成分 ingredients_id ...
配方 recipe_id ......
食谱(数据透视表) ingredients_id recipe_id
但我的理解是你一次只能将数据插入一个表中。
这就是我的问题所在。如果我有一个表格来输入食谱,我如何添加分配到3个表格的食谱?我使用多个查询吗?如果是这样,我怎么能保证他们会匹配。
很抱歉,如果这听起来像一个愚蠢的问题,但它正在煎炸我的大脑,请提前感谢您的反馈。
祝你好运
答案 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, ... )