gpt4 book ai didi

php - 获取准备好的语句中最后插入的 ID

转载 作者:行者123 更新时间:2023-11-30 21:50:44 25 4
gpt4 key购买 nike

我需要为每个插入操作获取最后插入的 ID 并将其放入数组中,我想看看正确的做法是什么。

关注这篇文章Which is correct way to get last inserted id in mysqli prepared statements procedural style?我试图将它应用到我的代码中,但我仍然没有得到正确的响应。

   if($data->edit_flag == 'ADDED')
{

$rowdata[0] = $data->location_name;
$rowdata[1] = 0;
$rowdata[2] = $data->store_id;

$query = "INSERT IGNORE INTO store_locations (location_name,total_items, store_id) VALUES (?,?,?)";

$statement = $conn->prepare($query);
$statement->execute($rowdata);
$id = mysqli_stmt_insert_id($statement);
echo "inserted id: " . $id;
}

然后我意识到我正在使用 PDO 连接,所以显然 mysqli 函数无法工作。我继续尝试以下操作

$id = $conn->lastInsertId();
echo "insert id: " . $id;

但是响应还是空的?我做错了什么?对于 lastInsertId(),我应该使用此处的 $conn 还是 $statement:

$statement = $conn->prepare($query);
$statement->execute($rowdata);

最佳答案

您根据 PDO:lastInsertId() 文档正确使用了 lastInsertId()

        $statement = $conn->prepare($query);
$statement->execute($rowdata);
$id = $conn->lastInsertId();

它不起作用的一些潜在原因:

  1. 此代码是否在交易中?如果是这样,您需要在执行之后和 lastInsertId() 之前提交事务
  2. 由于您 INSERT IGNORE 有可能 INSERT 语句生成错误而不是插入行,因此 lastInsertId() 可能为空。

希望这对您有所帮助!

关于php - 获取准备好的语句中最后插入的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47400920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com