【问题标题】:Show last id of database in PDO [duplicate]在 PDO 中显示数据库的最后一个 ID [重复]
【发布时间】: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

标签: php mysql pdo


【解决方案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。任何线索?
    猜你喜欢
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    • 2017-12-22
    • 2019-11-08
    相关资源
    最近更新 更多