繁体   English   中英

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

[英]How can I query for a primary key immediately after inserting a record?

使用数据库中的两个表并将一个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方法。 请注意,这些是针对每个连接的 ,因此即使您同时从多个单独的请求中进行了多次插入,查询也是安全的。

触发插入SQL后,mysql和mysqli的$ insert_id为刚刚插入的记录-您无需查询数据库。 您可以使用此:

$sql = 'INSERT INTO table1 (field1, field2) VALUES ("aaa", "bbb")';
$mysqli = new mysqli();
$mysqli->query($sql);
$pKey = $mysqli->insert_id;

现在$ pKey的值就是您刚刚插入的行的ID。

(有关更多信息,请参见此处: http : //pl1.php.net/manual/en/mysqli.insert-id.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM