2012-04-29 75 views
5

我想知道什麼最好的解決辦法是在MySQL查詢後得到最後插入的ID?最好的方法來找到最後插入的ID在MySQL中使用PHP

我已經找到了以下解決方案:

<?php 
function get_current_insert_id($table) 
{ 
    $q = "SELECT LAST_INSERT_ID() FROM $table"; 
    return mysql_num_rows(mysql_query($q)) + 1; 
} 
?> 

甚至使用mysql_insert_id PHP函數,但顯然這個功能不會與BIGINT很好地工作(這就是我在用的ID字段),如果有很多連續的sql查詢可能是不可靠的。

有人可以提供一個可靠和快速的解決方案來實現這項任務?

+1

這是LAST_INSERT_ID()的無效使用。你會像普通列一樣檢索它。 mysql_num_rows()將永遠是該查詢的一個。 – Corbin 2012-04-29 10:23:04

+0

我在php.net和海報上發現這個函數聲稱這個函數解決了所有由'mysql_insert_id'造成的問題! – 2012-04-29 10:25:16

+1

-1問這個問題,而不是閱讀手冊 – 2012-04-29 10:27:11

回答

10
+0

那麼這是我的問題,當有很多連續的sql連接和許多sql查詢運行時,它會如何反應。 – 2012-04-29 10:17:42

+1

@AhouraGhotbi:['LAST_INSERT_ID()'](http://dev.mysql.com/doc/refman/5.5/en/information-functions.html#function_last-insert-id)是每個連接。 – eggyal 2012-04-29 10:19:41

+0

我認爲鏈接到文檔會比隨機論壇帖子沒有引用更好(http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id)。但是,這是正確的,並且mysql_pconnect註釋是一個好消息。 – Corbin 2012-04-29 10:21:44

4

如果您將使用一個INSERT語句多行,LAST_INSERT_ID()只返回第一個插入的行所產生的價值。這樣做的原因是可以輕鬆地再現針對其他服務器的相同INSERT語句。

+3

如果您要從文檔中複製/粘貼某些內容,應該引用它。 – Corbin 2012-04-29 10:22:11