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