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

时间:2013-11-24 18:04:47

标签: php mysql

我有一个提交超级基本信息的表单,只是一个新名称(该名称被赋予唯一ID)。我想要做的是当用户提交它提交到数据库中的名称时,他们会被重定向到新页面card.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?在侥幸的情况下,2个或更多人同时提交第二个查询,即将最后一行插入数据库中将返回错误的行ID 2)。有一个while循环返回1条信息似乎是一个糟糕的做事方式,这可能是最基本的狗屎但我似乎无法返回1条数据而不这样做

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

您可以使用mysqli函数检索最后插入的ID(按照评论中的建议检查mysqli_insert_id),但我不建议您在URL中使用用户ID,人们可以尝试进入,使用其他ID

你也可以使用php函数生成自定义签出:uniqid