如何知道刚刚插入数据库那条数据的id

一、总结

一句话总结:这些常见功能各个框架里面都有,可以查看手册,thinkphp里面是$userId = Db::name('user')->getLastInsID();

1、在mysql和mysqli中如何选择?

用mysqli,php官方推荐

2、mysqli中如何查找到刚刚出入数据库的那条数据的id?

mysqli对象的indert_id属性

$mysqli->insert_id

二、PHP如何找到刚刚插入数据库的一条数据的ID?

$_title=$_POST['input_title'];
$_described=$_POST['described'];
mysql_query("insert into questionnaire (quesTitle,quesDescribe,createTime) values('$_title','$_described',now())");
header(index.php?quesid=刚刚插入的那个编号)

如上所述,我刚刚插入的一条数据,现在要立刻跳到该数据自动生成的id的页面去,怎么获取呢??

你看看 mysql_insert_id 这个函数. 获取上一步insert 插入成功的id, 不成功的时候是没有值的

mysql_insert_id() 函数返回上一步 INSERT 操作产生的 ID。 没事多自己百度一下,多看手册,别一有问题就到处发帖,这种只要一分钟就能知道的答案 ,你却要花十几分钟,甚至几个小时,甚至没人回答,我只能说一句,哥们 你这是何苦呢?

mysql_insert_id()将 MySQL 内部的 C API 函数 mysql_insert_id()的返回值转换成 long(PHP 中命名为 int)。如果 AUTO_INCREMENT 的列的类型是 BIGINT,则 mysql_insert_id()返回的值将不正确。可以在 SQL 查询中用 MySQL 内部的 SQL 函数 LAST_INSERT_ID()来替代。
例子一:]mysql_insert_id()]例子b]b]
<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Could not connect: " . mysql_error());
mysql_select_db("mydb");
mysql_query("INSERT INTO mytable (product) values ('kossu')");
printf ("Last inserted record has id %d\n", mysql_insert_id());
?>
 
function mysql_insert_id ($link_identifier = null) {}

/**
* @deprecated 5.5
* Get result data
* @link http://php.net/manual/en/function.mysql-result.php
* @param resource $result
* @param int $row <p>
* The row number from the result that's being retrieved. Row numbers
* start at 0.
* </p>
* @param mixed $field [optional] <p>
* The name or offset of the field being retrieved.
* </p>
* <p>
* It can be the field's offset, the field's name, or the field's table
* dot field name (tablename.fieldname). If the column name has been
* aliased ('select foo as bar from...'), use the alias instead of the
* column name. If undefined, the first field is retrieved.
* </p>
* @return string The contents of one cell from a MySQL result set on success, or
* false on failure.
* @since 4.0
* @since 5.0
*/

$mysqli->insert_id

 Example #1 $mysqli->insert_id example

 面向对象风格

 <?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world"); /* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
} $mysqli->query("CREATE TABLE myCity LIKE City"); $query = "INSERT INTO myCity VALUES (NULL, 'Stuttgart', 'DEU', 'Stuttgart', 617000)";
$mysqli->query($query); printf ("New Record has id %d.\n", $mysqli->insert_id); /* drop table */
$mysqli->query("DROP TABLE myCity"); /* close connection */
$mysqli->close();
?>
thinkphp 5.0
多去查看参考手册,里面肯定有

insert 方法添加数据成功返回添加成功的条数,insert 正常情况返回 1

添加数据后如果需要返回新增数据的自增主键,可以使用getLastInsID方法:

Db::name('user')->insert($data);
$userId = Db::name('user')->getLastInsID();

或者直接使用insertGetId方法新增数据并返回主键值:

Db::name('user')->insertGetId($data);

insertGetId 方法添加数据成功返回添加数据的自增主键

 
 
 
 

如何知道刚刚插入数据库那条数据的id的更多相关文章

  1. mybatis 做 insert操作的时候返回插入的那条数据的id

    著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:吃丸子的小鹿链接:http://www.zhihu.com/question/20810321/answer/16843223 ...

  2. 绝对干货,教你4分钟插入1000万条数据到mysql数据库表,快快进来

    我用到的数据库为,mysql数据库5.7版本的 1.首先自己准备好数据库表 其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下: ...

  3. 插入1000万条数据到mysql数据库表

    转自:https://www.cnblogs.com/fanwencong/p/5765136.html 我用到的数据库为,mysql数据库5.7版本的 1.首先自己准备好数据库表 其实我在插入100 ...

  4. [MyBatis]五分钟向MySql数据库插入一千万条数据 批量插入 用时5分左右

    本例代码下载:https://files.cnblogs.com/files/xiandedanteng/InsertMillionComparison20191012.rar 我的数据库环境是mys ...

  5. 一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 MySQL 数据库,又插入了一条数据,此时 id 是几?如何获取当前数据库版本?

    一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 MySQL 数据库,又插入了一条数据,此时 id 是几? 一般情况下,我们创建的表的类型是InnoDB,如果新增一条记录(不重启mysq ...

  6. 使用hibernate在5秒内插入11万条数据,你觉得可能吗?

    需求是这样的,需要查询某几个表的数据,然后插入到另外一个表. 一看到需求,很多人都会用hibernate去把这些数据都查询出来,然后放到list中, 然后再用for循环之类的进行遍历,一条一条的取出数 ...

  7. Jmeter连接mysql,如何用delete、update、insert真正删除、更改、插入数据库里的数据;

    1.如下图,当插入数据的时候如图对应填写,查询数据的时候上面插入的那条数据就会显示,但是如果不执行下图的提交数据:到数据库里查的时候,插入的这条数据实际上并没有插入成功: . 结果:如果没有提交数据, ...

  8. 关于如何在mysql中插入一条数据后,返回这条数据的id

    简单的总结一下如何在mysql中出入一条数据后,返回该条数据的id ,假如之后代码需要这个id,这样做起来就变得非常方便,内容如下: <insert id="insertAndGetI ...

  9. 教你如何6秒钟往MySQL插入100万条数据!然后删库跑路!

    教你如何6秒钟往MySQL插入100万条数据!然后删库跑路! 由于我用的mysql 8版本,所以增加了Timezone,然后就可以了 前提是要自己建好库和表. 数据库test, 表user, 三个字段 ...

随机推荐

  1. chage---修改帐号和密码的有效期限

    chage命令   chage命令是用来修改帐号和密码的有效期限. 语法 chage [选项] 用户名 选项 -m:密码可更改的最小天数.为零时代表任何时候都可以更改密码. -M:密码保持有效的最大天 ...

  2. 阅读笔记—MVC

    MVC设计模式 Model 1 体系结构 在Model 1 体系结构中,每一个请求的目标都是JSP页面.JSP页面负责完成请求所需要的而所有任务,其中包括验证客户.使用JavaBeans访问数据库及管 ...

  3. 关于编译com工程的一些体会

    作者:朱金灿 来源:http://blog.csdn.net/clever101 今天发现com的编译的一个重要一步是微软提供的midl工具将其中的idl文件生成一个头文件.c文件(即IID文件)和代 ...

  4. vue中判断路由变化

    使用from.path和to.path判断路由跳转 在methods里面写函数: 当然,上边函数里边可以做很多事情.

  5. CF-833B The Bakery(线段树优化Dp)

      Some time ago Slastyona the Sweetmaid decided to open her own bakery! She bought required ingredie ...

  6. 怎样让索引仅仅能被一个SQL使用

    有个徒弟问我,要创建一个索引,去优化一个SQL,可是创建了索引之后其它 SQL 也要用 这个索引,其它SQL慢死了.要优化的SQL又快.遇到这样的问题咋搞? 一般遇到这样的问题还是非常少的.处理的方法 ...

  7. 39.Intellij导入子项目时,maven列表子项目灰色不可用---解决方法

    转自:https://blog.csdn.net/jackieriver/article/details/79046326 导入子项目的module时,左侧project目录中有一个module图标右 ...

  8. 洛谷 P2069 松鼠吃果子

    P2069 松鼠吃果子 题目描述 有N个一种松鼠喜欢吃的果子由下向上串排成一列,并标号1,2,...N.一只松鼠从最下果子开始向上跳,并且第i次跳可以一次跳过i*i*i除以5的余数+1个果子(=i*i ...

  9. JS概述

             从Asp.NET跨越到JavaScript.这既是一个新的领域也是一个非常熟悉的地方,新是由于不知道什么是JavaScript,首先来了解一下什么是JavaScript.       ...

  10. php-wamp环境搭建

    wamp(Windows,Apache,Mysql,PHP) win8.1下搭建apache2.4(64位)  php5.6.11(64位)  mysql5.6.24(32位) d盘创建文件结构为: ...