PHP获取MySql新增记录ID值的方法

今天发现用mysql_insert_id()获取到的新增记录的id不正确,

虽然发现源代码的事务写的有问题,但是最根本的原因是,我插入数据的id类型是bigint型 

获取MySql新增记录ID值的方法有

1.使用语句

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

2.使用函数msyql_insert_id();

(1)mysql版

int mysql_insert_id ([ resource $link_identifier = NULL ] )

返回在最后一次执行了 INSERT 查询后,由 AUTO_INCREMENT 定义的字段的值。

返回上一步 INSERT 操作产生的 ID。如果上一查询没有产生 AUTO_INCREMENT 的 ID,则 mysql_insert_id() 返回 0

但是当id 为bigint 型时 就不在起作用了

(2)mysqli版

mixed mysqli_insert_id ( mysqli $link )

可根据结果的大小返回一个int或者string

3.使用查询

msyql_query("select last_insert_id()");

last_insert_id() 是mysql 函数 

该方法解决了 mysql_insert_id () 中遇到的 bigint 型问题 

last_insert_id() 返回的是 AUTO_INCREMENT 的 ID。

如果返回为0,查看表结构中,没有设置AUTO_INCREMENT ;或者是不是用了 insert delay 的功能(不会返回即时的返回id值)

4.PDO里的函数

public string PDO::lastInsertId ([ string $name = NULL ] )

返回最后插入行的ID或序列值

  

 

时间: 2024-08-06 16:03:03

PHP获取MySql新增记录ID值的方法的相关文章

PHP获取MySql新增记录ID值的3种方法

From: http://www.jb51.net/article/51473.htm 这篇文章主要介绍了PHP获取MySql新增记录ID值的3种方法,一般使用PHP自带函数mysql_insert_id() 即可实现,另2种方法权作特殊情况下使用,需要的朋友可以参考下 一.使用语句: 复制代码 代码如下: mysql_query("select max(id) from t1",$link); 使用此方法得到的是 id最大的值,确为最后一个值,但当多链接线程时,这个最大的id并不一定

MySQL获得指定数据表中auto_increment自增id值的方法及实例

http://kb.cnblogs.com/a/2357592/很多情况下,我们要提前用到当前某个表的auto_increment自增列id,可以通过执行sql语句来查询到这个id值. show table status where name=’表名’ 或者 show table status like ‘表名’ 然后从查询到的结果集中获得auto_increment的值 代码实例:<?php mysql_connect("localhost","root",

在MVC的cshtml视图页获取默认路由下的ID值的方法

<a href="/user/resume/index/11"> <span class="title bold">我的 @Request.RequestContext.RouteData.Values["id"]</span> </a> 如上代码如果想取最后的ID值11,只要如下做就行了: @Request.RequestContext.RouteData.Values["id"

获取自增长的id值

单个: <insert id="create" parameterType="com.dto.Cou" useGeneratedKeys="true" keyProperty="id"> insert into t ( batch_number ) values ( #{batchNumber,jdbcType=VARCHAR} ) </insert> 通过 对象. get获取 批量插入 <ins

JS,jQuery获取select标签中选中值的方法

JS方法如下: var obj=document.GetElementById("selectId");//声明一个select框对象 var index=obj.selectedIndex;//获取选中项的索引 var text=obj.options[index].text;//获取选中项的文本 var value=obj.options[index].value;//获取选中项的值 jQuery方法如下 $('#selectId option:selected').text();

mysql获取一个表中的下一个自增(id)值的方法

MySQL: Get next AUTO_INCREMENT value from/for table Note to self: To get the next auto_increment value from a table run this query: SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = $dbName AND TABLE_NAME = $tblName. Don’t for

mysql获取插入时自增ID值的方法

1.  LAST_INSERT_ID: LAST_INSERT_ID 是与table无关的,如果向表a插入数据后,再向表b插入数据,LAST_INSERT_ID会改变. LAST_INSERT_ID是基于Connection的,只要每个线程都使用独立的Connection对象,LAST_INSERT_ID函数将返回该Connection对AUTO_INCREMENT列最新的insert or update*作生成的第一个record的ID.这个值不能被其它客户端(Connection)影响,保证

DOM 获取id值的方法

function $$(id){ return document.getElementById(id); } 获取id的值:(可直接传值,不用每次都写document.getElementById("***");) $$("txtR").value;//单引号 和双引号 都可以!

SQLServer获取最后插入的ID值SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY的比较

IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值.IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表. @@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值. SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值 也许大家对SQL Server中的 @@IDENTITY 都不陌生,都知道它是获取数据表中最后一条插入数据的IDENTITY值.比如,表 A 中有个 ID 为自增1的字段,假设此时 I