PHP初学者:使用外键插入多个表的最佳实践

时间:2011-02-04 05:59:42

标签: php mysql

我正在学习基本的PHP MySQL。

截至目前,我有2张桌子;一个zoo表(父表)和一个species表(子表)。

zoo表包含ID (PK)animal_namespecies表包含ID (PK)animal_id (FK; zoo.ID)以及species_name

我的问题是,当我在zoo表中创建一行时,插入多表的最佳做法是什么。

目前,我想到的想法是有2个SQL语句,过程是这样的: -

  1. 将animal_name插入zoo
  2. 在动物园表中获取最后一个ID。
  3. 关闭光标
  4. 插入animal_id(最后一次插入ID为 动物园)和物种 表
  5. 关闭光标
  6. 这是最佳做法吗?无论如何,我可以在考虑可扩展性的情况下改进这个过程吗? (即当我在不久的将来添加更多带有引用zoo表的外键的表时?

    我在这里搜索过,有些同志提出了触发器,但MyISAM存储引擎不支持。我正在使用带有PHP PDO MySQL对象的MyISAM引擎。

2 个答案:

答案 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