阅读:3163回复:0
MySQL中如何获取下一条插入的自增ID 或 刚刚插入的id
MySQL中如何获取下一条插入的自增ID 或 刚刚插入的id
要立刻获得刚插入记录的id,该表必须有一个为一个AUTO_INCREMENT列生成的ID $sql_addinfo = " insert into contact_info_group set contact_group_id='',contact_id='' " ; mysql_query ( $sql_addinfo ) ; echo mysql_insert_id () ; mysql_insert_id – 取得上一步 INSERT 操作产生的 ID int mysql_insert_id ( [resource link_identifier]) mysql_insert_id() 返回给定的 link_identifier 中上一步 INSERT 查询中产生的 AUTO_INCREMENT 的 ID 号。如果没有指定 link_identifier,则使用上一个打开的连接。 如果上一查询没有产生 AUTO_INCREMENT 的值,则 mysql_insert_id() 返回 0。如果需要保存该值以后使用,要确保在产生了值的查询之后立即调用 mysql_insert_id()。 注: MySQL 中的 SQL 函数 LAST_INSERT_ID() 总是保存着最新产生的 AUTO_INCREMENT 值,并且不会在查询语句之间被重置。 警告 mysql_insert_id() 将 MySQL 内部的 C API 函数 mysql_insert_id() 的返回值转换成 long(PHP 中命名为 int)。如果 AUTO_INCREMENT 的列的类型是 BIGINT,则 mysql_insert_id() 返回的值将不正确。可以在 SQL 查询中用 MySQL 内部的 SQL 函数 LAST_INSERT_ID() 来替代。 具体使用如下语句:mysql_query(”SELECT LAST_INSERT_ID()”); PS: 在插入数据时候可以这样写insert into xxx (col_a, col_b) values (11,22);select LAST_INSERT_ID()这样不就可以取到最近生成的ID了吗. 常常需要在编程的时候获取当前表的下一个自增的ID值,因为表可能被删除之后造成最大的Max(ID) + 1并不是下一条ID的值,所以需要使用其他办法。通过查询Mysql的文档,会发现Mysql里面有一个函数叫做getLastInsertID,用来获取最后插入的表的ID值,但是对获取下一条插入的自增ID并没有太多帮助。 1. 方法1 插入一条测试记录,然后删除掉,获取ID。不再赘述。 2. 方法2 利用Mysql自带的一个函数语句 "SHOW TABLE STATUS" ,可以获取当前数据库里的所有表的属性等信息,通常用来做数据库的优化和维护。如果需要指定某一张表的话,可以通过两种方法指定。 一种是网上给出来的: show table status like 'TableName ' 另外就是常见的where语句 show table status where Name =' TableName ' 得到的结果集里面有一列AUTO_INCREMENT,是一个Int值变量,获取之后就是下一个要插入的ID了。 我这里用的: 这里为insert的操作语句 //-------------------cms mysql_insert_id()----------------------------- $result=$db->query("SELECT LAST_INSERT_ID() as id"); $data=$db->fetchNextObject($result); $newid =$data->id; //-------------------cms mysql_insert_id()----------------------------- |
|