-1

我有两个带有 auto_incrementing id 的表

MAINTENANCE
maintenance_id int(11) NOT NULL AUTO_INCREMENT,
description varchar(50)
PRIMARY KEY (maintenance_id)

我在生成maintenance_id 的maintenance.php 页面上有一个查询。

$sql = "insert into maintenancereq (maintenance_id,description)
        values('','description')";

而且我有一个不同的php页面,我需要该maintenance_id。我将如何查找在maintenance.php 页面上为不同页面上的不同查询生成的ID?

4

3 回答 3

1

通过一种方式来管理持久数据:

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

  2. 您可以使用链接中的 id 重定向maintenance.php到下一页,您的链接可能类似​​于http://myurl?maintenanceId=1&blah=blah.

然后将通过$_GET

if( isset($_GET['maintenanceId']) && is_numeric($_GET['maintenanceId']) ) {
 // do blah blah
}
于 2013-10-20T11:48:05.023 回答
1

您所要做的就是使用

mysql_insert_id();

在你的代码中。这将检索上一个查询(通常是 INSERT)为 AUTO_INCREMENT 列生成的 ID。

$sql = "insert into maintenancereq (maintenance_id,description)
        values('','description')";

只需执行上述查询并使用 mysql_insert_id();。您可以将此值放在 url 字符串上并从下一页获取值。或者,您可以将其放入会话中,然后从会话中检索它。

看看这里

于 2013-10-20T11:57:52.557 回答
0

MySQLLAST_INSERT_ID()为这种情况提供了功能。

执行

SELECT LAST_INSERT_ID()

插入一行后,结果将是自动生成的 ID。请注意,此查询应在插入后直接执行,因为必须使用相同的连接。然后必须将检索到的值传递到另一个页面,例如通过参数或会话变量。如果使用相同的连接,INSERT另一个客户端进入同一个表是没有问题的,如文档所述:

每个客户端都将收到客户端执行的最后一条语句的最后插入 ID

有关更多信息,请参阅有关该函数的 MySQL 文档

于 2013-10-20T11:44:16.193 回答