获取最后插入行的主键 ID 以运行多个插入操作 [重复]

Posted

技术标签:

【中文标题】获取最后插入行的主键 ID 以运行多个插入操作 [重复]【英文标题】:Getting the primary key ID of the last inserted row to run multiple insert operations [duplicate] 【发布时间】:2018-02-07 08:27:12 【问题描述】:

我必须一个接一个地运行多个INSERT 语句,但我需要检索其间最后插入的行的主键,以便在下一个INSERT 语句中使用。我知道我可以用SELECT LAST_INSERT_ID(); 做到这一点,但我不太确定如何在我的代码中使用它来存储在 php 变量中。

function addItem($name, $category, $rating, $user)
    $pdo = Database::connect();
    $sql = "INSERT INTO items (id, category, api, name, api_id) VALUES ('', '". $category ."', '', '". $name ."', '')";
    $pdo->query($sql);
    // $item_id = ???
    $sql = "INSERT INTO ratings (id, user, item, rating) VALUES ('', '". $user ."', '". $item_id ."', '". $rating ."')";
    $pdo->query($sql);
    Database::disconnect();

【问题讨论】:

PDO 方法的文档显示:php.net/manual/en/pdo.lastinsertid.php 如果您的主键列设置为自动递增,则无需在插入查询中添加它 在这里试试***.com/questions/1685860/… 【参考方案1】:

你可以像这样使用 PDO 的 lastInsertId 方法

$item_id = $pdo->lastInsertId();

http://php.net/manual/en/pdo.lastinsertid.php

【讨论】:

【参考方案2】:

试试这个:

function addItem($name, $category, $rating, $user)
    $pdo = Database::connect();
    $sql = "INSERT INTO items (id, category, api, name, api_id) VALUES ('', '". $category ."', '', '". $name ."', '')";
    $pdo->query($sql);

    // $item_id = ???
    $item_id = $pdo->lastInsertId();

    $sql = "INSERT INTO ratings (id, user, item, rating) VALUES ('', '". $user ."', '". $item_id ."', '". $rating ."')";
    $pdo->query($sql);
    Database::disconnect();

【讨论】:

以上是关于获取最后插入行的主键 ID 以运行多个插入操作 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 JPA 获取最后插入记录的主键

如果我的主键不自动递增,如何使用 PHP 获取最后插入的 ID

MySQL:在没有 auto_increment 的情况下获取最后插入的主键

Python操作MySQL获取插入数据的主键id

如何在 MySQL 中获取特定表的主键“列名”

在 SQL Server CE 和 C# 中获取新插入行的主键?