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

时间:2012-01-11 20:44:41

标签: php mysql insert

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

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

INSERT INTO `emails` (`email`) VALUE ('abc@example.com') ON DUPLICATE KEY UPDATE `id`=`id`

INSERT IGNORE INTO `emails` (`email`) VALUE ('abc@example.com')

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

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

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;

1 个答案:

答案 0 :(得分:3)

我怀疑它是以insert_id结尾的LAST_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