MYSQL 小技巧 -- LAST_INSERT_ID

2014-01-20  来源:本站原创  分类:php技巧  人气:5 

用PHP调用mysql , 内置的LAST_INSERT_ID() 这个函数可能没有什么人用,用的最多的还是 mysql_insert_id()

其实,这两个是有区别的,LAST_INSERT_ID() 能返回 bigint 值的id。而,mysql_insert_id 返回的是 int 。如果你
的id 是 unsigned int,或者 bigint 的 。那么,可能是返回的是错误的。而要用 LAST_INSERT_ID() 代替。

还有些朋友,返回的都是 0,不知道怎么回事,其实 LAST_INSERT_ID() 返回的是 AUTO_INCREMENT 的 ID。
如果,表结构中,没有设置,AUTO_INCREMENT 那么也无法返回。

还有些人,还是返回为 0. 那么你就要检查一下,是不是 用了 insert delay 的功能。这种情况下,是不会返回即时的返回id值的。

很多人喜欢用 select max(id) ... 来替换这个last_insert_id, 实际上, select max(id) 是非线程安全的,很有可能,
其他线程插入了新的数据,你就查不到你上次插入的 ID 了。而last_insert_id 是 和 一个mysql connect 相对应的,也就是
和你的当前线程相对应的,不会受其他线程的干扰。如果你的数据库发生了一些奇怪的错误,比如,本来是要更新A 数据的信息的,
结果 B 数据被更新了,而且是有时候正确,有时候不正确,人多的时候会非常的不正确。就要看看是不是 用了 select max(id)

相关文章
  • MYSQL 小技巧 -- LAST_INSERT_ID 2014-01-20

    用PHP调用mysql , 内置的LAST_INSERT_ID() 这个函数可能没有什么人用,用的最多的还是 mysql_insert_id() 其实,这两个是有区别的,LAST_INSERT_ID() 能返回 bigint 值的id.而,mysql_insert_id 返回的是 int .如果你 的id 是 unsigned int,或者 bigint 的 .那么,可能是返回的是错误的.而要用 LAST_INSERT_ID() 代替. 还有些朋友,返回的都是 0,不知道怎么回事,其实 LAST

  • 教你如何快捷的使用cmd访问mysql小技巧 2014-12-02

    平时我们如果想用cmd访问mysql数据库,需要先一步步进入到mysql的目录下,才能执行MYSQL命令,进行操作,下面介绍一种直接在cmd中执行mysql命令的方法,大赞! 以window7为例,右击"计算机" - 单击"属性" - 单击"高级系统设置" - 单击"环境变量",剩下看图: <图1> 右下角"环境变量". <图2>选择"PATH", 编辑. <

  • mysql 小技巧 2013-08-12

    1. 不写函数实现split截取 场景:dayNewStat+meilishuo+ipad+2003 (dayNewStat+meilishuo+iphone+2003)(dayNewStat+meilishuo+android+2003) 只取最后一位 设想:split('+')[-1] (python写法) 实现:有严格的格式要求,取巧方法,无技术含量 substring(record_tag,locate('+',replace(record_tag,'dayNewStat+meilish

  • MySQL小技巧总结 2014-05-14

    1.MySQL避免相同数据重复插入 若用户注册表有一列是email,避免相同email注册多个账号,那么就设置email为unique,这样就使email是唯一的,不会重复. 当插入的email和原来的一个email相同,则无法插入新的数据. alter table table_name add unique email

  • MySQL简化输入小技巧 2014-04-13

    在这里我将介绍两个使用MySQL数据库时候简化输入的小技巧. 1.如何放弃正在输入的命令. 在输入一条比较长的命令时,出现打字错误是在所难免的.在这种情况下,放弃正在输入的命令重头再来往往会是更好的选择. 这在mysql程序里很容易做到:不管光标位置在哪里,只需输入\c再按下回车键就可以退出当前命令行.不过,万一光标位置正处于某个已经用单引号或双引号括了起来的字符串的中间, \c就将被认为是那个字符串的一部分而起不到退出当前命令行的作用. 2.历史记录. mysql可以记住人们曾经输入过的命令.

  • MySql insert插入操作的3个小技巧分享 2014-08-12

    这篇文章主要介绍了MySql insert插入操作的3个小技巧分享,本文讲解了插入的数据来源自其他表.插入时排除(忽略)重复记录.插入时遇到重复记录做更新操作三个小技巧,需要的朋友可以参考下 1.插入的数据来源自其他表 表A有id, cola 字段 表B有id, cola, colb...等字段,其中id都为主键,cola为相同名字的列 现想将表B中colb>1000的记录都插入表A中,SQL语句可以这样写: insert into A(id,cola) select id,cola from

  • 总结MySQL建表.查询优化的一些实用小技巧 2014-10-02

    本篇文章是对MySQL建表以及查询优化的一些实用小技巧进行了详细的分析介绍,需要的朋友参考下 MySQL建表阶段是非常重要的一个环节,表结构的好坏.优劣直接影响着后续的管理维护,赶在明天上班前分享总结个人MySQL建表.MySQL查询优化积累的一些实用小技巧. 技巧一.数据表冗余记录添加时间与更新时间 我们用到的很多数据表大多情况下都会有表记录的"添加时间(add_time)",我建议大家再新增一个记录"更新时间(update_time)"字段,在我的工作里需要为市

  • 有关mysql的一些小技巧 2015-03-25

    有关mysql的一些小技巧,有需要的朋友可以参考下 1. 大批量乱序数据导入InnoDB很慢如何解决? InnoDB因为主键聚集索引的关系,如果没有主键或者主键非序列的情况下,导入会越来越慢,如何快速的迁移数据到InnoDB?借助MyISAM的力量 是很靠谱的,先关闭InnoDB的Buffer Pool,把内存空出来,建一张没有任何索引的MyISAM表,然后只管插入吧,concurrent_insert=2,在文件末尾并发插入,速度刚刚 的,插入完成后,ALTER TABLE把索引加上,记得还有

  • Linux Shell的一些使用小技巧收集 2014-08-10

    这篇文章主要介绍了Linux Shell的一些使用小技巧收集,本文收集了几十个小技巧,非常实用,需要的朋友可以参考下 检查远程端口是否对bash开放: echo >/dev/tcp/8.8.8.8/53 && echo "open" 让进程转入后台: [email protected]:name/app.git -b master Git 切换到其它分支(develop): [email protected]" To sync with master i

  • 收集的48个Shell脚本小技巧 2014-11-21

    这篇文章主要介绍了收集的48个Shell脚本小技巧,涵盖方方面面,比如获取CPU信息.VI技巧.正则表达式等等,需要的朋友可以参考下 本文收集了一堆的shell脚本技巧,我说过,我写博客主要是作一些学习笔记,方便自己查阅,所以,我会搞出这么一篇文章,也没有什么不可理解的.关于这些技巧的出处,诶,我也忘了,可能来自theunixschool. commandlinefu.酷勤网和igigo.net,当然了,也有部分是我自己的经验心得,管他呢,进了我的脑子就是我的了. 0. shell 调试 sh

  • PHP中文编码小技巧 2014-12-26

    这篇文章主要介绍了4个实用的PHP中文编码小技巧,掌握之后再也不用为编码问题苦恼了. PHP程序设计中中文编码问题曾经困扰很多人,导致这个问题的原因其实很简单,每个国家(或区域)都规定了计算机信息交换用的字符编码集,如美国的扩展 ASCII 码,中国的 GB2312-80,日本的 JIS 等.作为该国家/区域内信息处理的基础,字符编码集起着统一编码的重要作用.字符编码集按长度分为 SBCS(单字节字符集),DBCS(双字节字符集)两大类.早期的软件(尤其是操作系统),为了解决本地字符信息的计算机

  • php小技巧之过滤ascii控制字符 2013-10-01

    分享一个小技巧,在PHP中如何过滤ascii控制字符,需要的朋友可以参考下 还记得以前在工作中,将爬来的其它网站的数据导到xml.但是会遇到一个问题:即网页会有ascII的控制字符.一开始以为是别人为了防止采集而加入的,然后发现一个就往过滤表里加一个.直到慢慢发现,他们都是ascii表里的字符.找到原因了,就好解决了. /** * 根据ascii码过滤控制字符 * @param type $string */ public static function special_filter($stri

  • PowerShell小技巧之查找获取注册表路径 2013-10-06

    这篇文章主要介绍了在PowerShell中使用递归查找获取注册表路径的小技巧,有需要的朋友可以参考下 在先前的技巧中我们说明如何将一个PS内置的路径格式转化成一个实际路径.这里介绍了一个例子.这段代码递归从HKEY_CURRENT_USER获取所有包含"powershell"词缀的键(简单的替换查询词缀将能获得你想要查询的任何东西) Get-ChildItem -Path HKCU:\ -Include *PowerShell* -Recurse -ErrorAction Silent

  • div+css页面布局的五个小技巧 2013-10-07

    div css表单布局的五个小技巧可以帮助你更灵活的控制表单,使页面更加满意. 1.表单文本输入的移动选择: 在文本输入栏中,如果加入了提示,来访者往往要用鼠标选取后删除,再输入有用的信息.其实只要加入onMouseOver="this.focus()" onFocus="this.select()" 代码到 <textarea> 中,一切就会变得简单多了,如: <textarea name=textarea wrap=virtual rows=2

  • Win7常用小技巧总结 2013-10-08

    以下是本人平时使用及总结的一些小技巧,其实Win7的快捷键组合功能有很多,咱只学最最实用的.如果你也有同样的小技巧,就拿出来大家一起分享吧. Win7的使用时间还比较短,暂时就发现这几个比较有用的,有新发现后会随时更新的 一.Windows键 + 空格键"Space" [作用]:透明化所有窗口,快速查看桌面(并不切换) [快捷键]:win+空格 [小结]:当你打开了很多程序窗口的时候,这招非常有用,而且桌面还会有华丽的光影效果哦.没用过的赶紧试试先 二.Windows键 + D [作用

  • Python返回真假值(True or False)小技巧 2013-10-09

    这篇文章主要介绍了Python返回真假值(True or False)小技巧,本文探讨的是最简洁的条件判断语句写法,本文给出了两种简洁写法,需要的朋友可以参考下 在昨天关于substring的blog中有如下一段代码: 也许你已经发现,在Python 3中其实有办法只用一行完成函数: >>> def isSubstring2(s1,s2): return True if s2.find(s1)!=-1 else False 但是...还可以更简单吗? 如何更简单使用Python表达条件语

  • 小技巧:加强你的工作区,预防生产环境误操作 2013-10-18

    我会分享一系列开发生涯中所积累的有用且容易实现的小技巧,本文是此系列的第二篇. 想象你正在开车,突然有一辆车插队到你前面,你会马上踩刹车来避免事故发生,在这个紧张的时刻你会先去想刹车在哪边么?可能不会.通过以往不断地重复你的大脑已经完全知道刹车在哪边,这一点不止在紧急情况下很有用,在日常生活中也一样.如果人们经常混淆油门和刹车的位置,开车将是一件非常危险的事情! 我认为这种情况同样适用于开发工作区.你经历过把生产环境当做开发服务器而去运行了一条命令么?你有过错把线上网站当做本地版本去执行了一些操

  • Python中Collection的使用小技巧 2013-10-31

    这篇文章主要介绍了Python中Collection的使用小技巧,对初学者来说有不错的学习借鉴价值,需要的朋友可以参考下 本文所述实例来自独立软件开发者 Alex Marandon,在他的博客中曾介绍了数个关于 Python Collection 的实用小技巧,在此与大家分享.供大家学习借鉴之用.具体如下: 1.判断一个 list 是否为空 传统的方式: if len(mylist): # Do something with my list else: # The list is empty 由

  • Windows系统保密小技巧 2013-11-01

    计算机的智能化既给我们带来了极大的方便,也埋下了泄密的导火索,一旦别人使用或入侵你的计算机,通过简单的查找就会发现大量信息,如已被你删除的收到和发出的邮件.访问过的Internet网站.在网页表单中输入的数据.密码及个人信息,甚至在文档中使用过的词汇等.因此,掌握一些保密技巧,保护隐私不受侵扰就显得尤为重要.下面的一些小技巧将助你营造一个更加安全的操作环境. 关闭显示最近所用文件功能 即使入侵者无法直接浏览你处理过的文档的内容,也能通过在Word或Excel的"文件"菜单中查看你最近使

  • Lua中创建全局变量的小技巧(禁止未预期的全局变量) 2013-11-02

    这篇文章主要介绍了Lua中创建全局变量的小技巧(禁止未预期的全局变量),使用本文方法可以实现避免创建全局变量,在必须使用全局变量的情况下也给出了实现技巧,需要的朋友可以参考下 Lua 有一个特性就是默认定义的变量都是全局的.为了避免这一点,我们需要在定义变量时使用 local 关键字. 但难免会出现遗忘的情况,这时候出现的一些 bug 是很难查找的.所以我们可以采取一点小技巧,改变创建全局变量的方式. local __g = _G -- export global variable cc.exp