我正在学习基本的PHP MySQL。
截至目前,我有2张桌子;一个zoo
表(父表)和一个species
表(子表)。
zoo
表包含ID (PK)
和animal_name
。 species
表包含ID (PK)
和animal_id (FK; zoo.ID)
以及species_name
。
我的问题是,当我在zoo
表中创建一行时,插入多表的最佳做法是什么。
目前,我想到的想法是有2个SQL语句,过程是这样的: -
这是最佳做法吗?无论如何,我可以在考虑可扩展性的情况下改进这个过程吗? (即当我在不久的将来添加更多带有引用zoo
表的外键的表时?
我在这里搜索过,有些同志提出了触发器,但MyISAM存储引擎不支持。我正在使用带有PHP PDO MySQL对象的MyISAM引擎。
答案 0 :(得分:1)
使用PDO,您可以获得刚刚插入的行的ID而无需其他查询 - 只需执行
$newRowID = $conn->lastInsertId();
其中$ conn是您的数据库连接。
答案 1 :(得分:0)
使用MySQL内置工具查找上次生成的身份。
因此,对于您的第2项,请使用以下SQL语句:
`SELECT LAST_INSERT_ID()`
这会在您的连接上获得最后一个自动递增的ID。将该值加载到变量中,并在Item 4 INSERT
语句中使用它。
How to Get the Unique ID for the Last Inserted Row with MySQL