首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mysql插入并选择插入的id

Mysql插入并选择插入的id
EN

Stack Overflow用户
提问于 2014-03-22 09:13:17
回答 3查看 924关注 0票数 1

我将在mysql表中插入1行,该表具有auto_increment id值,并希望获得该行的id。你知道像这样的建筑

代码语言:javascript
复制
{
 INSERT INTO some_table (`name`) VALUES ('test name')
 ON SUCCESS RETURN id
}

表结构:

代码语言:javascript
复制
id: int not null auto_increment Primary key
name: Varchar (20)

我读过关于LAST_INSERT_ID的文章,但是如果我的脚本同时被调用,则会更改两个不同的插入,LAST_INSERT_ID可能返回错误的值。

我使用的是php和准备好的语句,这些语句不允许多次提交和/或回滚。

谢谢你的想法。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-22 09:19:07

尝尝这个

代码语言:javascript
复制
$sql = "INSERT INTO some_table (`name`) VALUES ('test name')";
$result = mysql_query($sql);
$last_id =  mysql_insert_id();
票数 1
EN

Stack Overflow用户

发布于 2014-03-22 09:18:22

对于多用户使用PDO,您有错误的假设。最后,insert ID存储在连接时创建的PDO对象中。因此,这个“最后插入ID”值存储在每个连接中。这样,同时通话就不会互相干扰。

这是人工参考

票数 2
EN

Stack Overflow用户

发布于 2014-03-22 09:16:36

先做插入

代码语言:javascript
复制
INSERT INTO some_table (`name`) VALUES ('test name');

然后紧接着就做

代码语言:javascript
复制
SELECT id FROM some_table WHERE name = 'test name';

并确保捕获后一个数据库的输出(这可能因连接到DB的方式而有所不同)。

编辑:或者,您可以在插入之后立即执行此操作:

代码语言:javascript
复制
SELECT id FROM some_table WHERE name = 'test name' ORDER BY id DESC LIMIT 1

这样,您就可以避免获得同名的早期输入。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22575646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档