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

标签 php mysql

我有一个表单,可以提交 super 基本信息,只是一个新名称(该名称被分配了一个唯一的 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 -> 用户提交新名称 -> 添加到数据库 -> 使用刚刚提交的名称的唯一 id 值重定向到 card.php

1.) 有没有办法保留刚刚提交的行的 id?碰巧有 2 个或更多人同时提交将最后一行插入数据库的第二个查询将返回错误的行 id
2)。让 while 循环返回 1 条信息似乎是一种糟糕的做事方式,这可能是最基本的狗屎,但我似乎无法在不这样做的情况下返回 1 条数据

最佳答案

尝试使用mysqli_insert_id,它返回从先前的INSERT操作生成的AUTO_INCRMENT 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

关于php - 获取刚刚插入数据库的行的唯一ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20177939/

相关文章:

php - laravel 5 collection pull 方法不打印任何内容

php - 2 个日期值之间的随机时间和日期

mysql-显示按照时间排序的用户列表

Mysql列重命名错误150

mysql - 如何使用内连接和子查询优化 SQL 查询和返回计数

mysql - 无法在 macOS Sierra 上安装 mysql2 gem

php - 在 Windows 和 Linux 上运行单元测试

php - 写入 Amazon DynamoDB (PHP API) 的速度慢得离谱

mysql - 具有计算的动态最小最大值的 SQL 查询

PHP Google Contact API 生成 HTTP/1.0 401 需要授权