用PHP调用mysql , 内置的LAST_INSERT_ID() 这个函数可能没有什么人用,用的最多的仍是 mysql_insert_id()
其实,这两个是有区别的,LAST_INSERT_ID() 能返回 bigint 值的id。而,mysql_insert_id 返回的是 int 。若是你
的id 是 unsigned int,或者 bigint 的 。那么,多是返回的是错误的。而要用 LAST_INSERT_ID() 代替。mysql
还有些朋友,返回的都是 0,不知道怎么回事,其实 LAST_INSERT_ID() 返回的是 AUTO_INCREMENT 的 ID。
若是,表结构中,没有设置,AUTO_INCREMENT 那么也没法返回。sql
还有些人,仍是返回为 0. 那么你就要检查一下,是否是 用了 insert delay 的功能。这种状况下,是不会返回即时的返回id值的。数据库
不少人喜欢用 select max(id) ... 来替换这个last_insert_id, 实际上, select max(id) 是非线程安全的,颇有可能,
其余线程插入了新的数据,你就查不到你上次插入的 ID 了。而last_insert_id 是 和 一个mysql connect 相对应的,也就是
和你的当前线程相对应的,不会受其余线程的干扰。若是你的数据库发生了一些奇怪的错误,好比,原本是要更新A 数据的信息的,
结果 B 数据被更新了,并且是有时候正确,有时候不正确,人多的时候会很是的不正确。就要看看是否是 用了 select max(id)安全