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

如何知道刚刚插入数据库那条数据的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
", 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

 1 Example #1 $mysqli->insert_id example
 2 
 3 面向对象风格
 4 
 5 <?php
 6 $mysqli = new mysqli("localhost", "my_user", "my_password", "world");
 7 
 8 /* check connection */
 9 if (mysqli_connect_errno()) {
10     printf("Connect failed: %s
", mysqli_connect_error());
11     exit();
12 }
13 
14 $mysqli->query("CREATE TABLE myCity LIKE City");
15 
16 $query = "INSERT INTO myCity VALUES (NULL, 'Stuttgart', 'DEU', 'Stuttgart', 617000)";
17 $mysqli->query($query);
18 
19 printf ("New Record has id %d.
", $mysqli->insert_id);
20 
21 /* drop table */
22 $mysqli->query("DROP TABLE myCity");
23 
24 /* close connection */
25 $mysqli->close();
26 ?>
thinkphp 5.0
多去查看参考手册,里面肯定有

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

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

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

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

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

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

 
 
 
 
原文地址:https://www.cnblogs.com/Renyi-Fan/p/9254593.html