php獲得剛插入數(shù)據(jù)的id 的幾種方法總結(jié)
向mysql 插入數(shù)據(jù)時(shí) 很多時(shí)候 我們想知道剛剛插入數(shù)據(jù)的id 這對(duì)我們很有用 下面我說出常用的三種方法并一一分析其利與弊。
一 用以下語句:
mysql_query("select max(id) from t1",$link);
使用這種方法時(shí) 我們得到得是 id最大的值 的確時(shí)最后一個(gè) 但當(dāng)多鏈接線程時(shí)這個(gè)最大的id并不一定是 我們插入的所以這個(gè)不利用域線程。
二 用以下函數(shù):
msyql_insert_id();
當(dāng)系統(tǒng)執(zhí)行完INSERT后,再執(zhí)行SELECT時(shí),可能已經(jīng)被分發(fā)到了不同的后端服務(wù)器,如果你使用的編程語言是PHP的話,此時(shí)應(yīng)該通過 mysql_insert_id()來得到最新插入的id,每次INSERT結(jié)束后,其實(shí)對(duì)應(yīng)的autoincrement值就已經(jīng)計(jì)算好返回給PHP 了,你無需再發(fā)出一次獨(dú)立的查詢,直接用mysql_insert_id()就可以了這個(gè)函數(shù)很好用 當(dāng)我們插入一條語句時(shí) 它自動(dòng)返回了 最后的id值并且此函數(shù) 僅對(duì)當(dāng)前鏈接有用 也就是說 它是多用戶安全型的所以我們經(jīng)常用此函數(shù);
但此函數(shù)有一個(gè)問題 就是 當(dāng)id 為bigint 型時(shí) 就不在起作用了 所以 現(xiàn)在 正在用此函數(shù)的請(qǐng)小心了不過 我們平時(shí)很少遇到這樣的問題,所以可以不用管它。
三:用一下查詢
msyql_query("select last_insert_id()");
last_insert_id() 是mysql 一個(gè)函數(shù) 也是 對(duì)當(dāng)前鏈接起效此用法 解決了 mysql_insert_id () 中遇到的 bigint 型問題。
總結(jié): 根據(jù)以上分析 第一種方法 盡量少用 多用第二種方法 當(dāng)遇到特殊情況時(shí) 可以考慮用第三種方法
以上這篇php獲得剛插入數(shù)據(jù)的id 的幾種方法總結(jié)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
TP5(thinkPHP5)框架mongodb擴(kuò)展安裝及特殊操作示例
這篇文章主要介紹了TP5(thinkPHP5)框架mongodb擴(kuò)展安裝及特殊操作,結(jié)合實(shí)例形式分析了MongoDB擴(kuò)展的基本安裝、配置、模型操作以及使用Push操作實(shí)現(xiàn)的數(shù)據(jù)添加、更新等方法,需要的朋友可以參考下2018-09-09
PHP 計(jì)算兩個(gè)特別大的整數(shù)實(shí)例代碼
這篇文章主要介紹了PHP 計(jì)算兩個(gè)特別大的整數(shù)實(shí)例代碼,需要的朋友可以參考下2018-05-05
PHP中利用Telegram的接口實(shí)現(xiàn)免費(fèi)的消息通知功能
這篇文章主要介紹了PHP中利用Telegram的接口實(shí)現(xiàn)免費(fèi)的消息通知功能,Telegram的通知就像短信提醒一樣。具體實(shí)現(xiàn)代碼大家參考下本文2017-12-12
Linux下搭建swoole實(shí)現(xiàn)php消息推送的方法
Swoole使用純C語言編寫,提供了PHP語言的異步多線程服務(wù)器,異步?TCP/UDP?網(wǎng)絡(luò)客戶端,異步?MySQL,異步?Redis,數(shù)據(jù)庫連接池,AsyncTask,消息隊(duì)列,毫秒定時(shí)器,異步文件讀寫,異步DNS查詢,完美支持PHP語言,本文講解Linux下搭建swoole實(shí)現(xiàn)php消息推送的方法2024-03-03

