zoukankan      html  css  js  c++  java
  • INSERT INTO 返回ID 插入数据库返回操作ID

     

    有些时候在执行数据库的INSERT操作后需要知道其产生的ID(我用的MySQL,主键都是设的AUTO_INCREMENT,执行插入操作的时候不用指定ID的值而由数据库自行产生),

    这时候就可以使用PHP的函数mysql_insert_id()直接获得这个ID,非常方便。

    但是有一点,如果在INSERT语句里面明确指出了具有AUTO_INCREMENT属性的ID列的值,那么函数将返回0,因为该ID值是由用户指定的,不是由数据库自动产生的。

    PHP手册对该函数的描述如下:

    mysql_insert_id()

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

    语法:mysql_insert_id(connection)

    参数connection,可选。规定 MySQL 连接。如果未规定,则使用上一个连接。

    mysql_insert_id() 返回给定的 connection 中上一步 INSERT 查询中产生的 AUTO_INCREMENT 的 ID 号。如果没有指定 connection ,则使用上一个打开的连接。

    如果需要保存该值以后使用,要确保在产生了值的查询之后立即调用 mysql_insert_id()。

    <?php$con = mysql_connect("localhost", "hello", "321");
    if (!$con)
    { die('Could not connect: ' . mysql_error());}$db_selected = mysql_select_db("test_db",$con);
    $sql = "INSERTINTO person VALUES ('Carter','Thomas','Beijing')";
    $result = mysql_query($sql,$con);echo "ID of last inserted record is: " . mysql_insert_id();mysql_close($con);?>

    mysql_insert_id() 返回给定的 link_identifier 中上一步 INSERT 查询中产生的 AUTO_INCREMENT 的 ID 号。如果没有指定 link_identifier,则使用上一个打开的连接。如果上一查询没有产生 AUTO_INCREMENT 的值,则 mysql_insert_id() 返回 0。如果需要保存该值以后使用,要确保在产生了值的查询之后立即调用 mysql_insert_id()。

    LAST_INSERT_ID()

    MySQL也提供了这么一个同样功能的API,它总是保存着最新产生的AUTO_INCREMENT值,并且不会在查询语句之间被重置,也就是说,在执行INSERT操作后,执行SELECT、UPDATE、DELETE语句都不会影响该API的返回值。

    可以用 SELECT LAST_INSERT_ID(); 来查询LAST_INSERT_ID() 的返回值。

    使用单条INSERT语句插入多条记录,,LAST_INSERT_ID() 只返回插入的第一条记录产生的AUTO_INCREMENT值。

  • 相关阅读:
    用sqlite3创建数据库实现数据固化功能
    MSP430F169单片机中的LED动态显示
    在GTK中设计简单的菜单栏
    在GTK下设置窗口背景图片
    在GTK+2.0中实现简单的多用户登入系统
    ubuntu 执行sudo apt-get install libgtk2.0-devs安装gtk+-2.0时报错Failed to fetch IP:https://的解决
    Linux下Makefile,静态库,动态库的实现
    Spring 之 BeanFactory 源码
    pig trial-group,foreach
    scala
  • 原文地址:https://www.cnblogs.com/zhanghaoyong/p/2644457.html
Copyright © 2011-2022 走看看