PHP - 插入并将 LAST_INSERT_ID() 保存到变量中

Posted

技术标签:

【中文标题】PHP - 插入并将 LAST_INSERT_ID() 保存到变量中【英文标题】:PHP - INSERT and save LAST_INSERT_ID() into a variable 【发布时间】:2017-04-12 23:05:02 【问题描述】:

我很抱歉我的 php 技能,但我只是不知道如何执行这个简单的任务,即插入新行并将其 ID 保存到变量中。 这是我得到的:

    // mysql inserting a new row
$sql = "INSERT INTO `order` (orderTitle, orderDescription, orderPrice,userID, categoryID)
  VALUES('$title', '$description','$price','$userID','$category');";

$sql .= "SELECT LAST_INSERT_ID();";
$result = mysqli_multi_query($con,$sql);

$result_get_id= mysqli_next_result($con);
$row = mysqli_fetch_row($result_get_id);
$order_id = $row[0]; // <-- how to get this value?? 

我意识到 row[0] 不起作用,这就是为什么我想知道如何正确提取 LAST_INSERT_ID() 值。

【问题讨论】:

有什么理由不使用mysqli_insert_id() 我从未见过任何使用mysqli_multi_query() 证明合理的代码。恕我直言,它只会让事情变得混乱。你的问题也不例外。 您还应该使用准备好的查询,而不是将变量替换到 SQL 中。也许INSERT 出现错误。 @Barmar 我没有使用 mysqli_insert_id() 因为我不知道,但这似乎已经成功了,所以非常感谢。 【参考方案1】:

这里有几件事...

    不要使用mysqli_multi_query - 在您的示例中没有必要。仅在 INSERT 上使用 mysqli_query。无需在 SQL 中查询最后插入 id。 要获取最后一个插入 ID,请在您的 INSERT 查询之后直接调用 mysqli_insert_id。您可以将其分配给变量,例如$order_id = mysqli_insert_id();

【讨论】:

【参考方案2】:

您正在使用的数据库类为此内置了函数,例如mysqli_insert_id(),或用于 PDO $db->lastInsertId()。

$mysqli->query("INSERT INTO order ... ");
printf ("Primary key of new record: %d.\n", $mysqli->insert_id);

http://php.net/manual/en/mysqli.insert-id.php

【讨论】:

以上是关于PHP - 插入并将 LAST_INSERT_ID() 保存到变量中的主要内容,如果未能解决你的问题,请参考以下文章

使用 LAST_INSERT_ID 插入

多次插入后更新特定记录 - 可能使用 last_insert_id()

插入指向错误的 last_insert_id() 后触发

插入许多行,LAST_INSERT_ID 返回 1 [重复]

MYSQL:存储过程,插入一行,然后通过 LAST_INSERT_ID() 选择它

PHP SQL 将 LAST_INSERT_ID() 赋值给一个变量