MYSQL 小技巧 -- LAST_INSERT_ID
更新時(shí)間:2009年11月24日 21:43:41 作者:
用PHP調(diào)用mysql , 內(nèi)置的LAST_INSERT_ID() 這個(gè)函數(shù)可能沒(méi)有什么人用,用的最多的還是 mysql_insert_id()
其實(shí),這兩個(gè)是有區(qū)別的,LAST_INSERT_ID() 能返回 bigint 值的id。而,mysql_insert_id 返回的是 int 。如果你
的id 是 unsigned int,或者 bigint 的 。那么,可能是返回的是錯(cuò)誤的。而要用 LAST_INSERT_ID() 代替。
還有些朋友,返回的都是 0,不知道怎么回事,其實(shí) LAST_INSERT_ID() 返回的是 AUTO_INCREMENT 的 ID。
如果,表結(jié)構(gòu)中,沒(méi)有設(shè)置,AUTO_INCREMENT 那么也無(wú)法返回。
還有些人,還是返回為 0. 那么你就要檢查一下,是不是 用了 insert delay 的功能。這種情況下,是不會(huì)返回即時(shí)的返回id值的。
很多人喜歡用 select max(id) ... 來(lái)替換這個(gè)last_insert_id, 實(shí)際上, select max(id) 是非線程安全的,很有可能,
其他線程插入了新的數(shù)據(jù),你就查不到你上次插入的 ID 了。而last_insert_id 是 和 一個(gè)mysql connect 相對(duì)應(yīng)的,也就是
和你的當(dāng)前線程相對(duì)應(yīng)的,不會(huì)受其他線程的干擾。如果你的數(shù)據(jù)庫(kù)發(fā)生了一些奇怪的錯(cuò)誤,比如,本來(lái)是要更新A 數(shù)據(jù)的信息的,
結(jié)果 B 數(shù)據(jù)被更新了,而且是有時(shí)候正確,有時(shí)候不正確,人多的時(shí)候會(huì)非常的不正確。就要看看是不是 用了 select max(id)
的id 是 unsigned int,或者 bigint 的 。那么,可能是返回的是錯(cuò)誤的。而要用 LAST_INSERT_ID() 代替。
還有些朋友,返回的都是 0,不知道怎么回事,其實(shí) LAST_INSERT_ID() 返回的是 AUTO_INCREMENT 的 ID。
如果,表結(jié)構(gòu)中,沒(méi)有設(shè)置,AUTO_INCREMENT 那么也無(wú)法返回。
還有些人,還是返回為 0. 那么你就要檢查一下,是不是 用了 insert delay 的功能。這種情況下,是不會(huì)返回即時(shí)的返回id值的。
很多人喜歡用 select max(id) ... 來(lái)替換這個(gè)last_insert_id, 實(shí)際上, select max(id) 是非線程安全的,很有可能,
其他線程插入了新的數(shù)據(jù),你就查不到你上次插入的 ID 了。而last_insert_id 是 和 一個(gè)mysql connect 相對(duì)應(yīng)的,也就是
和你的當(dāng)前線程相對(duì)應(yīng)的,不會(huì)受其他線程的干擾。如果你的數(shù)據(jù)庫(kù)發(fā)生了一些奇怪的錯(cuò)誤,比如,本來(lái)是要更新A 數(shù)據(jù)的信息的,
結(jié)果 B 數(shù)據(jù)被更新了,而且是有時(shí)候正確,有時(shí)候不正確,人多的時(shí)候會(huì)非常的不正確。就要看看是不是 用了 select max(id)
相關(guān)文章
PHP-CGI遠(yuǎn)程代碼執(zhí)行漏洞分析與防范
本文給大家介紹的是PHP-CGI遠(yuǎn)程代碼執(zhí)行漏洞(CVE-2012-1823)分析和防范,這是最近爆出的一個(gè)php的比較嚴(yán)重的漏洞,這里分享給大家。2017-05-05php實(shí)現(xiàn)替換手機(jī)號(hào)中間數(shù)字為*號(hào)及隱藏IP最后幾位的方法
這篇文章主要介紹了php實(shí)現(xiàn)替換手機(jī)號(hào)中間數(shù)字為*號(hào)及隱藏IP最后幾位的方法,涉及php字符串替換與正則操作的相關(guān)技巧,需要的朋友可以參考下2016-11-11解決File size limit exceeded 錯(cuò)誤的方法
本篇文章是對(duì)File size limit exceeded 錯(cuò)誤進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06php tp驗(yàn)證表單與自動(dòng)填充函數(shù)代碼
php tp驗(yàn)證表單與自動(dòng)填充函數(shù)代碼,需要的朋友可以參考下2012-02-02PHP中=賦值操作符對(duì)不同數(shù)據(jù)類型的不同行為
作為一個(gè)PHP的新手,一直對(duì)PHP的引用困惑了很久,今晚仔細(xì)看了用戶手冊(cè)和做了一些實(shí)驗(yàn),終于明白了其中的原理和細(xì)節(jié),特別是=操作符對(duì)于不同類型的不同行為。2011-01-01php數(shù)組合并array_merge()函數(shù)使用注意事項(xiàng)
array_merge()函數(shù)在php中是對(duì)數(shù)組進(jìn)行合并的,可以把多個(gè)數(shù)組合成一個(gè)數(shù)組,并且不改變?cè)瓟?shù)組(www.111cn.net)的值了,但今天我在使用array_merge合并數(shù)組時(shí)碰到幾個(gè)小細(xì)節(jié)上的問(wèn)題,下面我舉例子給各位朋友看看2014-06-06PHP實(shí)現(xiàn)的防止跨站和xss攻擊代碼【來(lái)自阿里云】
這篇文章主要介紹了PHP實(shí)現(xiàn)的防止跨站和xss攻擊代碼,是一款來(lái)自阿里云的防注入腳本,可實(shí)現(xiàn)針對(duì)注入、XSS攻擊等的過(guò)濾功能,需要的朋友可以參考下2018-01-01