MySQL中如何擷取下一條插入的自增ID 或 剛剛插入的id

來源:互聯網
上載者:User

MySQL中如何擷取下一條插入的自增ID 或 剛剛插入的id
要立刻獲得剛插入記錄的id,該表必須有一個為一個AUTO_INCREMENT列產生的ID

  1. $sql_addinfo = " insert into contact_info_group set contact_group_id='',contact_id='' " ;
  2. mysql_query ( $sql_addinfo ) ;
  3. echo mysql_insert_id () ;
mysql_insert_id – 取得上一步 INSERT 操作產生的 ID

int mysql_insert_id ( [resource link_identifier])
mysql_insert_id() 返回給定的 link_identifier 中上一步 INSERT 查詢中產生的 AUTO_INCREMENT 的 識別碼。如果沒有指定 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()-----------------------------

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.