php获得刚插入数据的id 的几种方法总结
向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()");
last_insert_id() 是mysql 一个函数 也是 对当前链接起效此用法 解决了 mysql_insert_id () 中遇到的 bigint 型问题。
总结: 根据以上分析 第一种方法 尽量少用 多用第二种方法 当遇到特殊情况时 可以考虑用第三种方法
以上这篇php获得刚插入数据的id 的几种方法总结就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
THINKPHP在添加数据的时候获取主键id的值方法
在使用ThinkPHP新增数据后可以很方便的获取自动增长型的主键值. $Model = D('Blog'); $data['name'] = 'test'; $data['title'] = '测试标题'; $data['content'] = '测试内容'; $result = $Model->add($data); if ($result){ $id = $result; // 获取数据库写入数据的主键 }else{ exit($Model->getError()); } 如果你的数据表主
-
php 生成唯一id的几种解决方法
网上查了下,有很多的方法 1.md5(time() . mt_rand(1,1000000)); 这种方法有一定的概率会出现重复 2.php内置函数uniqid() uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID. w3school参考手册有一句话:"由于基于系统时间,通过该函数生成的 ID 不是最佳的.如需生成绝对唯一的 ID,请使用 md5() 函数". 下面方法返回结果类似:5DDB650F-4389-F4A9-A100-501EF1348872 functi
-
解析sql中得到刚刚插入的数据的id
LAST_INSERT_ID:LAST_INSERT_ID 是与table无关的,如果向表a插入数据后,再向表b插入数据,LAST_INSERT_ID会改变.在多用户交替插入数据的情况下max(id)显然不能用. 这就该使用LAST_INSERT_ID了,因为LAST_INSERT_ID是基于Connection的,只要每个线程都使用独立的 Connection对象,LAST_INSERT_ID函数将返回该Connection对AUTO_INCREMENT列最新的insert or update
-
ThinkPHP写数组插入与获取最新插入数据ID实例
本文实例讲述了thinkphp写数组插入与获取最新插入数据ID的实现方法.分享给大家供大家参考.具体方法分析如下: 该实例讲述了thinkphp怎么自己写数组插入,此处是以注册用户为例. 具体实现代码如下: 复制代码 代码如下: public function insert2(){ header("Content-Type:text/html; charset=utf-8"); $Dao = M("User"); // 构建写入的数据数组 $data[&quo
-
php插入mysql数据返回id的方法
如下所示: <?php $dbh = mysql_connect('localhost','root','root'); mysql_select_db('pkbk'); $query = "insert intov9_admin_role_priv(roleid, m, c, a, `data`, siteid) values (12, 'huiben','huiben', 'hbprop_add', '', 1)"; $res = mysql_query($query, $d
-
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
前言 最近在工作中又遇到了这个问题,PHP中如何获得刚插入数据的ID(或当前发布文章的ID)呢?觉得有必要整理下详细的解决方法,方便自己也给有需要的朋友们提供以帮助,那么话不多说了,来看看详细的解决介绍. 解决方法 其实用 mysql_insert_id() 函数就可以实现的. 定义和用法 mysql_insert_id() 函数返回上一步 INSERT 操作产生的 ID. 注意:如果上一查询没有产生 AUTO_INCREMENT 的 ID,则 mysql_insert_id() 返回 0. 语
-
php获得刚插入数据的id 的几种方法总结
向mysql 插入数据时 很多时候 我们想知道刚刚插入数据的id 这对我们很有用 下面我说出常用的三种方法并一一分析其利与弊. 一 用以下语句: mysql_query("select max(id) from t1",$link); 使用这种方法时 我们得到得是 id最大的值 的确时最后一个 但当多链接线程时这个最大的id并不一定是 我们插入的所以这个不利用域线程. 二 用以下函数: msyql_insert_id(); 当系统执行完INSERT后,再执行SELECT时,可能已经被分
-
.net实现oracle数据库中获取新插入数据的id的方法
在sql sever中实现插入数据的自动增长是很容易的,但是在oracle数据库中实现这一操作不是很容易,同时要想在.net中实现获取新插入数据的id,而且不会出现读错的情况,就更显得困难了,为了解决在oracle数据中插入的数据能够自增id,同时获取新数据的id,并避免因并发操作而出现的id读错的问题. 数据表结构为test(id,name) 首先,解决数据id自增问题 创建一个序列sequence(sequence详解可从网上搜一下,这里不赘述) create sequence SEQ_te
-
详解mysql插入数据后返回自增ID的七种方法
引言 mysql 和 oracle 插入的时候有一个很大的区别是: oracle 支持序列做 id: mysql 本身有一个列可以做自增长字段. mysql 在插入一条数据后,如何能获得到这个自增 id 的值呢? 一:使用 last_insert_id() SELECT LAST_INSERT_ID(); 1. 每次 mysql 的 query 操作在 mysql 服务器上可以理解为一次"原子"操作, 写操作常常需要锁表, 这里的锁表是 mysql 应用服务器锁表不是我们的应用程序锁表
-
Mybatis如何获取最新插入数据的id
目录 获取最新插入数据的id 原始方法 使用useGeneratedKeys 根据时间查询最新一条数据 第一种的xml配置根据最新的插入时间 第二种的xml配置根据ownum 获取最新插入数据的id 原始方法 读取最后一条的插入数据,但这样会造成如果两条数据同时插入,会并发出现错误 SELECT * FROM admin_users where 1=1 ORDER BY id desc LIMIT 1 select MAX(id) from admin_users 使用useGenerated
-
Yii框架批量插入数据扩展类的简单实现方法
本文实例讲述了Yii框架批量插入数据扩展类的简单实现方法.分享给大家供大家参考,具体如下: MySQL INSERT语句允许插入多行数据,如下所示: INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9); 那么要实现批量插入,主要的任务就是按照列顺序,把数据组装成上述格式即可,可以使用sprintf和vsprintf函数来实现. 下面是一个实现批量插入的Yii扩展类的简单示例(支持VARCHAR类型数据): <?php /** *
-
详解PostgreSQL提升批量数据导入性能的n种方法
关键字:批量数据导入,数据加载,大量插入,加快,提升速度 多元化选择时代,人生里很多事物都是如此,凡事都没有一成不变的方式和方法.不管白猫黑猫,能抓老鼠的就是好猫,适合自己的就是最好的. 提升批量数据导入的方法亦是如此,没有何种方法是最优的,应用任何方法前根据自己的实际情况权衡利弊,做出选择. 批量导入数据之前,无论采取何种方式,务必做好相应的备份. 导入完成后亦需对相应对象进行ANALYZE操作,这样查询优化器才会按照最新的统计信息生成正确的执行计划. 下面正式介绍提升批量数据导入性能的n种方
-
Servlet实现共享数据JavaWeb组件的几种方法
目录 一.Servlet简介 二.Servlet的运行过程 Servlet组件: 多个Servlet之间共享数据实现方案 转发与重定向 全局作用域对象 Servlet JavaWeb三大组件包括,Servlet组件(接受请求,响应数据),Filter组件(过滤,拦截请求),Listener组件(监听器),这三大组件构成了javaWeb核心内容,也是作为后端来说,JavaWeb最重要的内容. 一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其
-
python训练数据时打乱训练数据与标签的两种方法小结
如下所示: <code class="language-python">import numpy as np data = np.array([[1,1],[2,2],[3,3],[4,4],[5,5]]) y = np.array([1,2,3,4,5]) print '-------第1种方法:通过打乱索引从而打乱数据,好处是1:数据量很大时能够节约内存,2每次都不一样----------' data = np.array([[1,1],[2,2],[3,3],[4,4
-
SQL Server使用一个语句块批量插入多条记录的三种方法
我们在日常操作中,免不了对数据库的某张表,一次性的要插入多条记录,但是首先想到的就是复制,粘帖N多重复的INSERT INTO 语句,万一某一个少了一个分号,或多个逗号之类的,产生错误,要找起来可就费尽了,既浪费时间,又耽误工作. 除了上面所说的方法外,其实还有二中方法,相比较起来要比之前那个要简洁. 首先是之前那个方法: 复制代码 代码如下: INSERT INTO MyTable(ID,NAME) VALUES(1,'123'); INSERT INTO MyTable(ID,NAME
随机推荐
- angularjs指令中的compile与link函数详解
- 基于正则表达式实现UL下LI的样式替换功能
- Ext JS Grid在IE6 下宽度的问题解决方法
- JS实现的通用表单验证插件完整实例
- 数组方法解决JS字符串连接性能问题有争议
- Asp.net下载功能的解决方案代码
- php常用hash加密函数
- 关于PHP递归算法和应用方法介绍
- Python高级应用实例对比:高效计算大文件中的最长行的长度
- js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码
- 浅析JavaScript中的CSS属性及命名规范
- ruby声明式语法的实现例子
- 符合web标准的连续滚动图像的js代码
- JavaScript入门教程(1) 什么是JS
- jQuery中nextAll()方法用法实例
- jQuery Validate初步体验(二)
- js常用的继承--组合式继承
- spring WebSocket示例详解
- Android折叠式Toolbar使用完全解析(CollapsingToolbarLayout)
- Android ViewFlipper的简单使用