php - (使用MySQL插入)当记录存在时找不到该记录的id

标签 php mysql insert

我使用 PHP 在 MySQL 数据库中插入一条记录。如果记录是新的,我会得到 insert_id,但如果它已经存在,我无法使用单个查询获取 id。

以下两个查询都允许我添加记录或跳过记录(如果已存在):

INSERT INTO `emails` (`email`) VALUE ('<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b2d3d0d1f2d7cad3dfc2ded79cd1dddf" rel="noreferrer noopener nofollow">[email protected]</a>') ON DUPLICATE KEY UPDATE `id`=`id`

INSERT IGNORE INTO `emails` (`email`) VALUE ('<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="6d0c0f0e2d08150c001d0108430e0200" rel="noreferrer noopener nofollow">[email protected]</a>')

在这两种情况下获得正确结果的正确方法是什么?

编辑:这是我的表格语法:

CREATE TABLE `emails` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `email` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

最佳答案

我怀疑是 LAST_INSERT_ID 的值最终出现在 insert_id 中。

引自MySQL手册;

要使 LAST_INSERT_ID() 对更新有意义,请按如下方式插入行:

INSERT INTO table (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;

来源:http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

关于php - (使用MySQL插入)当记录存在时找不到该记录的id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8826336/

相关文章:

php - 从 mysql 查询编辑 wordpress 菜单

php - 运行时错误 - 未捕获( promise ): [object Object]

mysql - 将 MySQL key 对转换为串联列表

mysql - 我如何在 Where 子句中使用 IFNULL

PHP为网页中的变量设置变量

mysql - 显示本月特定城市尚未创建项目的用户

java MySQL 事务/INSERT IGNORE 和 ON DUPLICATE KEY UPDATE

php - 使用 Active Record 类转义 codeigniter 进行 sql 注入(inject)

sql-server - 在 SQL Server 中,如何将数据插入到只有一列标识类型的表中?

php - 如何将表中的日期与当前日期(不包括 codeigniter 中的时间)进行比较