我已经搜索了几天的答案,但我似乎无法找到正确的解决方案。因此,我提出以下问题:
假设我的表格中有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
答案 0 :(得分:1)
我的答案是首先从表中检索单词的id,并且只有在它无法插入时才会检索。在这两种情况下,你都准备好了。
我的猜测是,由于你没有在mysql中创建任何被忽略的错误,所以它会更快。