我现在正在学习基本的 PHP MySQL。
截至目前,我有 2 个表;一个 zoo
表(父表)和一个 species
表(子表)。
zoo
表包含ID (PK)
和animal_name
。 species
表包含一个 ID (PK)
和 animal_id (FK; zoo.ID)
和 species_name
。
我的问题是,当我在 zoo
表中创建一行时,插入多表的最佳做法是什么。
目前,我想到的想法是有2条SQL语句,过程是这样的:-
- 将 animal_name 插入动物园
- 获取动物园表中的最后一个 ID。
- 关闭光标
- 插入 animal_id(最后插入的 ID zoo) 和 species_name 到 species 表
- 关闭光标
这是最佳做法吗?无论如何,我可以在考虑可伸缩性的情况下改进这个过程吗? (即,当我在不久的将来添加更多带有外键引用到 zoo
表的表时?
我在这里搜索了一下,一些同志建议使用触发器,但是MyISAM存储引擎不支持它。我将 MyISAM 引擎与 PHP PDO MySQL 对象一起使用。
最佳答案
使用 PDO,您无需其他查询即可获取刚刚插入的行的 ID - 只需执行
$newRowID = $conn->lastInsertId();
$conn 是你的数据库连接。
关于PHP 初学者 : Best practice for inserting into multiple tables with foreign key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4895036/