获取刚刚插入数据库的行的唯一id


Get unique id of row just inserted into database

我有一个提交超级基本信息的表单,只是一个新名称(该名称被分配了一个唯一的id)。我试图做到的是,当用户将提交到数据库中的名称提交时,他们会被重定向到一个新的页面卡片.php,在那里他们可以添加更具体的信息。但是,与刚刚提交的行相关联的唯一id需要在URL(id=$id)中跟随

$query = "INSERT INTO name VALUES(NULL, '$name')";
mysqli_query($conn, $query);
$query2 = "SELECT * FROM name ORDER BY id DESC LIMIT 1";
$result = mysqli_query($conn, $query2);
while($row = mysqli_fetch_array($result)) {
  $id = $row['id'];
}
header("Location: http://localhost/card.php?id=$id");

过程

addName.php->用户提交新名称->添加到数据库->重定向到card.php,带有刚刚提交的名称的唯一id值

1.)有没有办法保留刚刚提交的行的id?如果有两个或两个以上的人同时提交将最后一行插入数据库的第二个查询,则会返回错误的行id
2) 。让while循环返回1条信息似乎是一种糟糕的方式,这可能是最基本的糟糕方式,但如果不这样做,我似乎无法返回1条数据

尝试使用mysqli_insert_id,它返回从上一个INSERT操作生成的AUTO_INCREMENT ID。

$query = "INSERT INTO name VALUES(NULL, '$name')";
mysqli_query($conn, $query);
$id = mysqli_insert_id();
header("Location: http://localhost/card.php?id=$id");

参考:http://us1.php.net/manual/en/function.mysql-insert-id.php

您可以使用mysqli函数来检索最后插入的id(如注释中所建议的那样检查mysqli_insert_id),但我不建议您使用URL中的用户id,人们可以尝试使用其他id 登录

您还可以使用php函数生成自定义的is checkout:uniqid