PHP 初学者 : Best practice for inserting into multiple tables with foreign key

标签 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 插入动物园
  2. 获取动物园表中的最后一个 ID。
  3. 关闭光标
  4. 插入 animal_id(最后插入的 ID zoo) 和 species_name 到 species 表
  5. 关闭光标

这是最佳做法吗?无论如何,我可以在考虑可伸缩性的情况下改进这个过程吗? (即,当我在不久的将来添加更多带有外键引用到 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/

相关文章:

mysql - sql-按平均范围选择第一个表中具有第二个表外键的项目的ID

php - 从 json 更改字符串颜色

php - 为什么 Yii-2 框架的自动生成 View (gii) 前有一个下划线?

php - 如何使用 PHP 从 MySQL 表的一个列中选择多个值

php - 根据模型将ajax数据插入数据库

mysql - Laravel - 与父级在同一张表上的一对多

html - 从数据库加载默认选定选项

php - 将字符串修改为数组、正则表达式

php - $_POST 为空,使用 Ajax 发送表单值

PHP/Linux shell 文本颜色