PHP MySQL AUTO_INCREMENT INSERT INTO .. ON DUPLICATE KEY

时间:2017-04-06 09:22:54

标签: php mysql auto-increment mysql-insert-id

我已经搜索了几天的答案,但我似乎无法找到正确的解决方案。因此,我提出以下问题:

假设我的表格中有ID列,AUTO_INCREMENT字段和Word列,这是唯一的。我运行以下查询:

"INSERT IGNORE INTO Table (Word) VALUES('Test')"
"INSERT IGNORE INTO Table (Word) VALUES('Test1')"
"INSERT IGNORE INTO Table (Word) VALUES('Test2')"
"INSERT IGNORE INTO Table (Word) VALUES('Test')" //THIS ONE WILL BE IGNORED

问题是我无法从上次查询中获取最后一个$mysqli->insert_id,因为它不会插入任何内容。但是我需要这个已经存在于DB中的ID。因此,我认为我应该使用ON DUPLICATE KEY UPDATE语句,但这会导致AUTO_INCREMENT正在跳过值的情况,因为它会更新值,但 ALSO 会增加AUTO_INCREMENT值。此值未分配给任何行。

所以最后,我得到了一张这样的表:

ID |Word
1  |Test
2  |Test1
3  |Test2
//Trying to insert words that where already in the table..
12 |Test3
//Trying to insert words that where already in the table..
17 |Test4

1 个答案:

答案 0 :(得分:1)

我的答案是首先从表中检索单词的id,并且只有在它无法插入时才会检索。在这两种情况下,你都准备好了。

我的猜测是,由于你没有在mysql中创建任何被忽略的错误,所以它会更快。