检索其他页面的自动增量 ID


retrieve auto increment id for a different page

我有两个带有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?

通过一种持久数据的方法:

  1. 您可以使用会话$_SESSION 在下一页中包含持久数据

  2. 您可以从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 文档