INSERT INTO 返回ID 插入數據庫返回操作ID


 

有些時候在執行數據庫的INSERT操作后需要知道其產生的ID(我用的MySQL,主鍵都是設的AUTO_INCREMENT,執行插入操作的時候不用指定ID的值而由數據庫自行產生),

這時候就可以使用PHP的函數mysql_insert_id()直接獲得這個ID,非常方便。

但是有一點,如果在INSERT語句里面明確指出了具有AUTO_INCREMENT屬性的ID列的值,那么函數將返回0,因為該ID值是由用戶指定的,不是由數據庫自動產生的。

PHP手冊對該函數的描述如下:

mysql_insert_id()

mysql_insert_id() 函數返回上一步 INSERT 操作產生的 ID。如果上一查詢沒有產生 AUTO_INCREMENT 的 ID,則 mysql_insert_id() 返回 0。

語法:mysql_insert_id(connection)

參數connection,可選。規定 MySQL 連接。如果未規定,則使用上一個連接。

mysql_insert_id() 返回給定的 connection 中上一步 INSERT 查詢中產生的 AUTO_INCREMENT 的 ID 號。如果沒有指定 connection ,則使用上一個打開的連接。

如果需要保存該值以后使用,要確保在產生了值的查詢之后立即調用 mysql_insert_id()。

<?php$con = mysql_connect("localhost", "hello", "321");
if (!$con)
{ die('Could not connect: ' . mysql_error());}$db_selected = mysql_select_db("test_db",$con);
$sql = "INSERTINTO person VALUES ('Carter','Thomas','Beijing')";
$result = mysql_query($sql,$con);echo "ID of last inserted record is: " . mysql_insert_id();mysql_close($con);?>

mysql_insert_id() 返回給定的 link_identifier 中上一步 INSERT 查詢中產生的 AUTO_INCREMENT 的 ID 號。如果沒有指定 link_identifier,則使用上一個打開的連接。如果上一查詢沒有產生 AUTO_INCREMENT 的值,則 mysql_insert_id() 返回 0。如果需要保存該值以后使用,要確保在產生了值的查詢之后立即調用 mysql_insert_id()。

LAST_INSERT_ID()

MySQL也提供了這么一個同樣功能的API,它總是保存着最新產生的AUTO_INCREMENT值,並且不會在查詢語句之間被重置,也就是說,在執行INSERT操作后,執行SELECT、UPDATE、DELETE語句都不會影響該API的返回值。

可以用 SELECT LAST_INSERT_ID(); 來查詢LAST_INSERT_ID() 的返回值。

使用單條INSERT語句插入多條記錄,,LAST_INSERT_ID() 只返回插入的第一條記錄產生的AUTO_INCREMENT值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM