我有两个带有auto_incrementing id 的表
MAINTENANCE
maintenance_id int(11) NOT NULL AUTO_INCREMENT,
description varchar(50)
PRIMARY KEY (maintenance_id)
我在维护.php页面上有一个生成maintenance_id的查询。
$sql = "insert into maintenancereq (maintenance_id,description)
values('','description')";
我有一个不同的 php 页面,我需要那个maintenance_id。如何查找在维护.php页面上为不同页面上的不同查询生成的 ID?
通过一种持久数据的方法:
-
您可以使用会话
$_SESSION
在下一页中包含持久数据 -
您可以从
maintenance.php
重定向到下一页,并在链接中使用 id,您的链接可能看起来像http://myurl?maintenanceId=1&blah=blah
.
然后将通过$_GET
获取id
if( isset($_GET['maintenanceId']) && is_numeric($_GET['maintenanceId']) ) {
// do blah blah
}
您所要做的就是使用
mysql_insert_id();
在您的代码中。这将检索由上一个查询(通常为 INSERT)为AUTO_INCREMENT列生成的 ID。
$sql = "insert into maintenancereq (maintenance_id,description)
values('','description')";
只需执行上述查询并使用 mysql_insert_id();。您可以将此值放在 url 字符串上,并从下一页获取该值。或者,您可以将其放入会话,然后从会话中检索它。
请看这里
MySQL为这种情况提供了LAST_INSERT_ID()
函数。
执行
SELECT LAST_INSERT_ID()
插入一行后,结果将是自动生成的 ID。 请注意,此查询应在插入后直接执行,因为必须使用相同的连接。然后,检索到的值必须传递到另一个页面,例如通过参数或会话变量。如果使用相同的连接,则另一个客户端将另一个INSERT
到同一个表中不会有问题,如文档所述:
每个客户端将收到客户端执行的最后一个语句的最后一个插入的 ID
有关更多信息,请参阅有关该函数的 MySQL 文档