在 PDO 中显示数据库的最后一个 ID [重复]

Posted

技术标签:

【中文标题】在 PDO 中显示数据库的最后一个 ID [重复]【英文标题】:Show last id of database in PDO [duplicate] 【发布时间】:2018-03-09 22:30:07 【问题描述】:

我正在尝试获取数据库的最后一个 ID 号。但它只显示0。 我正在学习 PDO。谁能告诉我该怎么做?

if($_SERVER['REQUEST_METHOD']=='POST')
  $sql = "SELECT * FROM tablename";
  $stmt = $pdo->prepare($sql);
  $stmt->execute();
  $row = $stmt ->fetch();
  $showid = $pdo->lastInsertId();
  echo $showid;

【问题讨论】:

您的lastInsertId() 中有什么内容? 这里没有插入任何东西,所以insert id不可用。 @MammaMia:“它只显示 0” lastInsertId()引用手册,返回最后插入行的ID;您的查询是 SELECT 查询,而不是 INSERT。你可能想要SELECT table.id FROM table ORDER BY table.id DESC LIMIT 1 我最后一个 insertid 应该是 2 【参考方案1】:

lastInsertId 将返回由同一连接插入的行的 ID。您不能在该上下文之外使用它。

获取最后一个 ID 的最简单方法是运行类似,

SELECT max(id) FROM tablename

如果您使用它来确定接下来应该插入哪个 ID,请考虑为您的 ID 使用自动增量列。

【讨论】:

【参考方案2】:

lastInsertId() 仅在 INSERT 查询之后有效 - 因为您只是在进行选择,所以它总是会返回 string(1) = 0

因此,您可以在 INSERT 语句之后执行此代码,也可以执行以下操作:

$stmt = $db->query("SELECT LAST_INSERT_ID()");
$lastId = $stmt->fetchColumn();

参考这里:PDO get the last ID inserted

访问此线程,您将找到 Corbin 提供的我的示例代码以及有关此主题的更多信息。

【讨论】:

我试过你的链接,然后它只显示 0 但这应该显示 2。任何线索?

以上是关于在 PDO 中显示数据库的最后一个 ID [重复]的主要内容,如果未能解决你的问题,请参考以下文章

你如何从一个类中获取最后插入的 ID 到重定向 [重复]

如何在使用 PHP-PDO 记录查询时获取最后一个插入 ID

我的 pdo 结果在表中重复

在 PDO(使用 MySQL)中执行 INSERT 后获取最后插入的行?

使用 PDO 插入时获取自动递增行 ID [重复]

PDO将最后一个插入ID插入两个表