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 返回 1 [重复]