问题标签 [last-insert-id]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
183 浏览

php - 返回最新的插入 id

我无法获得最新的插入 ID。这是我的 php 代码:

当我将查询'SELECT LAST_INSERT_ID() FROM candidates'直接放入 MySQL 作为回报时,我得到的记录与该表中的记录一样多,所有值都是 0。例如,现在我有 5 条记录,id 是 2、3、4、5、6(我删除了第一个),我得到这张表:
LAST_INSERT_ID()
0
0
0
0
0

如何获取最新的插入记录 ID?顺便说一句,只有 1 列是AUTO_INCREMENT,即id

0 投票
1 回答
238 浏览

php - 使用 select last_insert_id 生成唯一 ID

在阅读了 Stackoverflow 上的可能选项后,我没有看到我正在考虑的确切情况的答案......

案例:我有一个自动生成与 mysql 连接的模板的 php 系统。

为了使系统正常工作,我需要每个生成的模板在创建时分配一个唯一的 6 位整数。而不是弄乱随机发生器等......

A)我可以简单地在数据库中创建一个名为'pageid'的表,int(11)/唯一/自动增量,起始值为100000,然后在模板创建过程中,只需在此表上执行插入,然后'选择 last_insert_id()' 来提取最后一个值,然后在创建模板时将其注入到模板中?(换句话说,该表的唯一功能是生成并返回最后一个唯一 ID)。

B)如果是这样,我应该担心使用这种方法有什么问题吗?(除了这意味着只能生成 899,999 个模板的限制——在这种情况下这不是问题)。

任何想法或更好的方法表示赞赏......

0 投票
9 回答
10906 浏览

mysql - PDO - lastInsertId() 用于插入多行查询

我可以将 2 个宠物插入一个表中,并获取它们的 lastInsertId() 以一次进一步处理一个(2 个查询)。
我想知道如果我在 1 个查询中插入 2 行,是否有办法获取两个 lastInsertIds() 并将它们分配给变量:

是否可以获得 coco 和 jojo 的 lastInsertId() ?所以像:

这将给出相同的 ID,有什么方法可以获得 2 个 ID?仅供参考,这是在 try 块中。

0 投票
2 回答
4347 浏览

zend-framework2 - Zend/ZF2/TableGateway mysql_insert_id 替换?

我正在尝试从 mysql 切换到 Zend / TableGateway 类。

我想知道是否有一种类似于 mysql_insert_id 的方法来获取最后插入的行的自动递增 id。

谷歌搜索,我找到了一些答案,指向 DB-Adapter 的 lastInsertId(),但是,这种方法在 ZF2 中似乎不再可用。另外:插入方法的返回值是返回一个布尔值,而不是 ZF1 中的最后一个 id。

目前我正在使用一个丑陋的解决方法。请看下面的代码。

是否有更好/推荐的获取 ID 的方法?

0 投票
0 回答
374 浏览

mysql - 避免增加 Auto_increment 值?

在 MySQL 中,您可以同时插入一行并更新“最后插入 ID”。我使用这个技巧能够有条件地插入项目(唯一性)并且在所有情况下仍然获得唯一的 ID。

下面的代码有效。问题是该ON DUPLICATE KEY语句还更新了Auto_increment值。有可能避免这种情况吗?

现在我们有了一个条目id=1。但是,下一个条目将具有id=3自第二个失败Auto_increment时更新值以来的值。INSERT这可以检查如下:

问:是否可以使用此技巧(或等效方法)并保持Auto_increment价值?显然,在这种情况下,它不需要更新。

0 投票
1 回答
1631 浏览

mysql - 存储过程和 mysql_insert_id 问题

我的问题是:我创建了一个从 php 到 mysql 的存储过程。现在,在有人谈论这种做法之前,该程序运行良好。问题是这样的,当我从 php 调用该过程并且我知道已输入一条记录时,mysql_insert_id() 返回 0...任何想法为什么?

哦,是的,我的 id 字段是 AUTO_INCREMENT 和 PRIMARY KEY

ps 如果有一种简单的方法可以在这里格式化我的代码,请告诉我。我把pre放在html中,但似乎效果不太好。

提前泰。

和 PHP 代码

0 投票
1 回答
1599 浏览

php - 为什么当我在 mysql 中调用 STORED PROCEDURE 时 pdo->lastInsertId() 返回 0?

我需要返回数据库中最后插入行的 id:

我有一个名为 DatabaseHandler 的类来使用 pdo

和 mysql db 中的存储过程:

当我这样调用时,会创建数据库记录,但 lastInsertId() 返回 0:

我做错了什么?

0 投票
1 回答
1630 浏览

python - 扭曲的 adbapi:runInteraction last_insert_id()

我们下面第二行的lastID对应第一行的插入?或者它可能来自任何 runInteraction 线程?

0 投票
2 回答
908 浏览

php - PHP 用于单个 MySQL 多行 INSERT,每行带有 LAST_INSERT_ROW?

跳到问题底部的“我的代码”,直奔主题。


$con = mysql_connect('localhost', 'mysql_user', 'mysql_password');


一般示例:

可以在单个 中执行多个查询字符串mysql_query,如下所示...

可以向每个查询字符串添加多行,如下所示...

有一个值数组,像这样......

...可以使用循环动态创建查询字符串,如下所示...


问题:

如何编写执行多个 INSERT 查询字符串的单个 MySQL 查询,每个查询字符串都有多行,以便第二个查询字符串插入的每一行都可以引用第一个查询字符串插入的相应行。因此$var,在这个片段中将对应于第一个 INSERT 的 auto_increment 行 ID。


我的代码:

这是我的代码的简化版本...

什么是安全的生成方式$row_ID_from_first_insert

据我了解LAST_INSERT_ID(),在查询字符串中使用将不起作用,因为当使用单个查询字符串插入多行时,它仅返回第一个插入的行 ID。在 foreach 循环中使用LAST_INSERT_ID()+1where1替换为增量变量是否安全?如果来自不同用户的多个提交同时发生怎么办?

0 投票
1 回答
146 浏览

mysql - 在 MySQL 表中复制行后如何返回行 ID?

我需要复制/复制表中的一行,然后返回新行的“id”值。我的“id”列是一个自动增量字段。

如果我这样做$id_new = $dbh->lastInsertId();返回'0',但不知道为什么。有任何想法吗?