php - 如何在插入记录后立即查询主键?

标签 php mysql

在我的数据库中使用两个表并将一个 HTML 表单的数据拆分为两个不同的查询,我遇到了一个问题,即从第一个查询中识别主键以用作第二个查询中的外键。这是我在伪代码中谈论的内容:

$FormData1, $FormData2, ... INSERT INTO table1 //primary key is auto-generated int
$key = SELECT primaryKey FROM table1 WHERE *** Uh-oh!
$otherFormData1, $otherFormData2, $key ... INSERT INTO table2

鉴于系统需要设计成可以发生并发事务,我该如何解决这个问题?如果我知道它一次只会运行一个实例,那么我可以只查询添加的最后一条记录,但我不觉得这是解决我的问题的一个非常“整洁”(甚至安全)的解决方案.

最佳答案

您可以查询 LAST_INSERT_ID(),但您可以使用 mysqli::insert_idPDO::lastInsertId 方法.请注意,这些都是针对每个连接的,因此即使您有许多插入同时发生在不同的请求中,查询也是安全的。

关于php - 如何在插入记录后立即查询主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18625038/

相关文章:

c# - Entity Framework 播种导致插入语句与外键冲突

PHP session 处理程序 Redis - 传输中的 AWS ElastiCache 加密

php - 使用 PHP 从 Angular 中的 $resource 获取参数值

mysql - 运行 10,000 个查询每个更新一行更快,还是运行 100 个查询每个更新 100 行更快?

mySQL , 在另一个表中用作外键的主键

mysql - 创建表 MYSQL 时出错 : SYNTAX

php - 使 PHP 的 mail() 异步

javascript - 如果我的 h3 没有首先出现在页面上(PHP CSS 或 JS),则更改 CSS

php - Zend View 在处理大数据集时渲染速度很慢

mysql - 如果数据库查询参数不是用户提交的而是来自数据库,是否必须转义?