Php MySQL Insert语句外键自动添加主键

Php MySQL Insert语句外键自动添加主键,php,mysql,foreign-keys,primary-key,sql-insert,Php,Mysql,Foreign Keys,Primary Key,Sql Insert,我有一个相当复杂的数据库,其中设置了许多外键关系,我想知道是否有一种简单的方法可以将条目插入其中一个表中 这是包含一些外键的表 CREATE TABLE package ( id INT PRIMARY KEY AUTO_INCREMENT, master_id INT NOT NULL UNIQUE, library_id INT NOT NULL, FOREIGN KEY (master_id) REFERENCES master(id), FOREI

我有一个相当复杂的数据库,其中设置了许多外键关系,我想知道是否有一种简单的方法可以将条目插入其中一个表中

这是包含一些外键的表

CREATE TABLE package (
    id INT PRIMARY KEY AUTO_INCREMENT,
    master_id INT NOT NULL UNIQUE,
    library_id INT NOT NULL,
    FOREIGN KEY (master_id) REFERENCES master(id),
    FOREIGN KEY (library_id) REFERENCES library(id)
) DEFAULT CHARSET = utf8;
当这个表被设置时,它只保存了两个外键和主键,这意味着这里的所有内容都是数字。这就是我希望发生的事情,但这也意味着此表的
INSERT
语句如下所示

INSERT INTO package (master_id, library_id) VALUES (235, 12);
或者类似的事情

有没有一种方法可以做出这样的陈述:

INSERT INTO package (master_id, library_id)
VALUES ([master_field], [library_field]);
其中
master\u字段
library\u字段
是这些表的条目吗?我也不确定该如何处理,因为主表中没有其他字段是唯一的,所以如果有两个条目会发生什么


无论如何,如果有人知道如何做这样的事情,那将不胜感激!在MySQL中执行所有这些操作更可取,但我对使用PHP执行这些操作没有问题。

您可以在MySQL中通过使用SELECT语句来提供INSERT的值来完成所有操作。例如:

INSERT INTO package (master_id, library_id)
SELECT (SELECT master_field FROM master_table WHERE {some condition} LIMIT 1), (SELECT library_id FROM library_table WHERE {some condition} LIMIT 1)

不过,您可能不想这样做,而是在PHP代码中使用单独的SELECT语句,以便在没有与您的条件匹配的库id的情况下更轻松地处理错误。

好的,这看起来会很好。我猜这将不得不在PHP思想中完成,因为获得大于或小于1个结果的问题。。。我有点希望尽可能远离PHP,但这将非常有效。非常感谢。