1. 程式人生 > >php 獲取最後插入資料的id

php 獲取最後插入資料的id

原文出處:http://blog.sina.com.cn/s/blog_3f8e41370100ijd3.html

向mysql 插入資料時 很多時候 我們想知
道剛剛插入資料的id 這對我們很有用 下面我說出常用的三種
方法並一一分析其利與弊
一 用以下語句:


mysql_query("select max(id) from t1",$link);

使用這種方法時 我們得到得是 id最大的值 的確時最後一個 但當多連結執行緒時
這個最大的id並不一定是 我們插入的所以這個不利用域執行緒
二 用以下函式:

msyql_insert_id();

當系統執行完INSERT後,再執行SELECT時,可能已經被分發到了不同的後端伺服器

,如果你使用的程式語言是PHP的話,此時應該通過 mysql_insert_id()來得到最新插入的id,
每次INSERT結束後,
其實對應的autoincrement值就已經計算好返回給PHP 了,你無需再發出一次獨立的查詢,
直接用mysql_insert_id()就可以了
這個函式很好用 當我們插入一條語句時 它自動返回了 最後的id值
並且此函式 僅對當前連結有用 也就是說 它是多使用者安全型的
所以我們經常用此函式;
但此函式有一個問題 就是 當id 為bigint 型時 就不在起作用了 所以 現在 正在用此函式的請小心了
不過 我們平時很少遇到這樣的問題,所以可以不用管它
三:用一下查詢

msyql_query("select last_insert_id()");
注意:讀取query的資料需要用fetch_assoc()方法。
last_insert_id() 是mysql 一個函式 也是 對當前連結起效

此用法 解決了 mysql_insert_id () 中遇到的 bigint 型問題


總結: 根據以上分析 第一種方法 儘量少用 多用第二種方法 當遇到特殊情況時 可以考慮用第三種方法