如何知道刚刚插入数据库那条数据的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 方法添加数据成功返回添加数据的自增主键