PHP SQL 将 LAST_INSERT_ID() 赋值给一个变量

Posted

技术标签:

【中文标题】PHP SQL 将 LAST_INSERT_ID() 赋值给一个变量【英文标题】:PHP SQL assign LAST_INSERT_ID() into a variable 【发布时间】:2020-11-24 11:58:03 【问题描述】:

我正在尝试将LAST_INSERT_ID() 分配给一个变量。当我使用LAST_INSERT_ID() 时它可以工作,但是当我使用$id = LAST_INSERT_ID(); 时它不起作用。

作品:

INSERT INTO pooruser (userid, name) values (LAST_INSERT_ID(), 'Jack')

不起作用:

$id = LAST_INSERT_ID(); 
INSERT INTO freeuser (userid, name) values ('$id', 'Jack')

我不确定为什么它不起作用。如果有人可以帮助我,我将不胜感激!

此外,如果我可以让它工作以将其存储在会话中,我会做$_SESSION('id') = $id; 吗?

再次感谢任何帮助!

【问题讨论】:

【参考方案1】:

你使用LAST_INSERT_ID()错了:

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

如果你想用 SQL 而不是 PDO API 来做,你可以像普通的选择查询一样做:

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

资源:PDO get the last ID inserted 这里是其他连接的例子:https://www.w3schools.com/php/php_mysql_insert_lastid.asp

对于会话:

$_SESSION['id'] = $id;

【讨论】:

以上是关于PHP SQL 将 LAST_INSERT_ID() 赋值给一个变量的主要内容,如果未能解决你的问题,请参考以下文章

我在 php 和 mysql 中使用 LAST_INSERT_ID() 但我无法得到结果。为啥?

mysql @@identity 与 sql-server last_insert_id()

php 函数 last_insert_id() 不适用于 REPLACE INTO 查询

Java中last_insert_id的使用

使用从 php 中选择 last_insert_id() 不起作用

Spring Batch 无法获取 last_insert_id();嵌套异常是 java.sql.SQLException: Lock wait timeout exceeded;