当前位置: 首页 > 知识库问答 >
问题:

PDO把最后一个ID插入

李锦
2023-03-14

我有一个查询,我想插入最后一个ID。字段ID是主键,并自动递增。

我知道我必须用这句话:

LAST_INSERT_ID()

该语句适用于这样的查询:

$query = "INSERT INTO `cell-place` (ID) VALUES (LAST_INSERT_ID())";

但是如果我想使用此语句获取ID:

$ID = LAST_INSERT_ID();

我得到这个错误:

Fatal error: Call to undefined function LAST_INSERT_ID()

我做错了什么?

共有3个答案

朱睿
2023-03-14

您可以通过在连接对象($conn)上运行lastInsertId()方法来获取最后一个事务的id。

像这样$盖子=$con-

请查看文档https://www.php.net/manual/en/language.oop5.basic.php

丌官坚秉
2023-03-14

lastInsertId()仅在插入查询之后有效。

正确:

$stmt = $this->conn->prepare("INSERT INTO users(userName,userEmail,userPass) 
                              VALUES(?,?,?);");
$sonuc = $stmt->execute([$username,$email,$pass]);
$LAST_ID = $this->conn->lastInsertId();

不正确:

$stmt = $this->conn->prepare("SELECT * FROM users");
$sonuc = $stmt->execute();
$LAST_ID = $this->conn->lastInsertId(); //always return string(1)=0
曹高轩
2023-03-14

那是因为这是一个SQL函数,而不是PHP。您可以使用PDO::lastInsertId()

比如:

$stmt = $db->prepare("...");
$stmt->execute();
$id = $db->lastInsertId();

如果您想使用SQL而不是PDO API来执行此操作,您可以像普通选择查询一样执行此操作:

$stmt = $db->query("SELECT LAST_INSERT_ID()");
$lastId = $stmt->fetchColumn();
 类似资料:
  • 问题内容: 我有一个查询,我想插入最后一个ID。字段ID是主键,并且是自动递增的。 我知道我必须使用以下语句: 该语句适用于如下查询: 但是,如果我想使用以下语句获取ID: 我收到此错误: 我究竟做错了什么? 问题答案: 那是因为那是SQL函数,而不是PHP。您可以使用。 喜欢: 如果要使用SQL而不是PDO API进行操作,则可以像普通的select查询一样进行操作:

  • 问题内容: 我正在插入一条记录,我想使用插入的最后一条记录的ID。这是我尝试过的: 我收到错误消息: SQL语法错误;请查看与您的MySQL服务器版本相对应的手册,以在“ SELECT LAST_INSERT_ID()”附近使用正确的语法。谁能告诉我我的错误在哪里?谢谢! 问题答案: 签出mysql_insert_id() 在mysql_query()命令中执行INSERT语句后运行该函数时,其结

  • 问题内容: 我正在将PHP PDO与PostgreSQL一起用于新项目。 给定以下功能,如何返回刚刚插入的行的ID?它不像现在那样工作。 问题答案: 从手册: 根据基础驱动程序,返回最后插入的行的ID或序列对象的最后一个值。例如,PDO_PGSQL()要求您为name参数指定序列对象的名称。 应该是这样的: [编辑]更新文档链接

  • 问题内容: 我正在使用PHP中的mvc结构,我想检索最后插入的行ID。 我创建了以下sql代码: 但不幸的是我遇到了这个错误: 我也尝试过此堆栈链接,但不适用于我,因此如果您能帮助我获取ID,我将非常高兴。 我也在这里共享我的controller.php文件。 问题答案: 你快到了。 如果您查看lastInsertId的手册页,则会在数据库句柄上调用它- 您当前正在语句中对其进行调用。 您只需要致

  • 问题内容: 使用PDO运行以下查询(实际上,我使用准备好的语句,但存在相同的问题) 如何获得有关和的记录的ID ? 从字面上返回最后一个ID。 采取这个最后的ID,减去记录数并假定范围覆盖了我的所有记录,是否足够?会有差距/跳跃。是否保证此查询是原子查询? 问题答案: 如果您使用的是MyISAM表,则由于表级别的锁定机制,您只能获得一定范围的ID。 阅读http://dev.mysql.com/d

  • 问题内容: 我想获取表中最后一个ID插入的值。我该怎么做? 问题答案: 好吧,我使用的解决方案是: 这将从插入数据库的最后一行获取id列:)