程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> MYSQL 小技巧 -- LAST_INSERT_ID

MYSQL 小技巧 -- LAST_INSERT_ID

編輯:關於PHP編程

其實,這兩個是有區別的,LAST_INSERT_ID() 能返回 bigint 值的id。而,mysql_insert_id 返回的是 int 。如果你
的id 是 unsigned int,或者 bigint 的 。那麼,可能是返回的是錯誤的。而要用 LAST_INSERT_ID() 代替。

還有些朋友,返回的都是 0,不知道怎麼回事,其實 LAST_INSERT_ID() 返回的是 AUTO_INCREMENT 的 ID。
如果,表結構中,沒有設置,AUTO_INCREMENT 那麼也無法返回。

還有些人,還是返回為 0. 那麼你就要檢查一下,是不是 用了 insert delay 的功能。這種情況下,是不會返回即時的返回id值的。

很多人喜歡用 select max(id) ... 來替換這個last_insert_id, 實際上, select max(id) 是非線程安全的,很有可能,
其他線程插入了新的數據,你就查不到你上次插入的 ID 了。而last_insert_id 是 和 一個mysql connect 相對應的,也就是
和你的當前線程相對應的,不會受其他線程的干擾。如果你的數據庫發生了一些奇怪的錯誤,比如,本來是要更新A 數據的信息的,
結果 B 數據被更新了,而且是有時候正確,有時候不正確,人多的時候會非常的不正確。就要看看是不是 用了 select max(id)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved