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

Posted

技术标签:

【中文标题】php 函数 last_insert_id() 不适用于 REPLACE INTO 查询【英文标题】:php function last_insert_id() is not working with REPLACE INTO query 【发布时间】:2010-04-15 10:44:24 【问题描述】:

我正在使用 REPLACE INTO 查询插入到表中,但在使用 mysql_query() 函数执行查询后,如果我使用 last_insert_id() 它只给我 0 值。

为什么会这样?以及如何克服这种行为。

:潘卡杰

【问题讨论】:

【参考方案1】:

您可以尝试改用INSERT INTO ... ON DUPLICATE KEY UPDATE。它完成与REPLACE INTO 相同的事情,但在单个服务器端操作中。 REPLACE INTO 最终会导致两种操作:删除旧的,插入新的。

但无论查询类型如何,您都必须确保表的主键是auto_increment 字段。 last_insert_id() 否则无法正常工作。

【讨论】:

【参考方案2】:

REPLACE INTO似乎不影响通过last_insert_id()获取的值。

从这一点来看,这似乎是预期的行为:

LAST_INSERT_ID() give wrong value after REPLACE INTO query LAST_INSERT_ID()

【讨论】:

这适用于您指定自动增量字段的值(即关闭魔法 ;-))。 PankajK,您的问题是这样的吗?

以上是关于php 函数 last_insert_id() 不适用于 REPLACE INTO 查询的主要内容,如果未能解决你的问题,请参考以下文章

PHP - 插入并将 LAST_INSERT_ID() 保存到变量中

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

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

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

MySQL :LAST_INSERT_ID()函数总结

MySQL 获取数据库最后的id last_insert_id()函数