PHP MySQL AUTO_INCREMENT с INSERT INTO .. ​​ON DUPLICATE KEY

Я искал ответ в течение нескольких дней, но, похоже, не могу найти правильного решения. Поэтому я задаю следующий вопрос:

Предположим, у меня есть таблица с колонкой 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 из последнего запроса, потому что он ничего не вставляет. Однако мне нужен этот идентификатор, который уже находится в БД. поэтому я подумал, что я должен использовать ON DUPLICATE KEY UPDATE Однако это приводит к ситуации, когда AUTO_INCREMENT пропускает значения, поскольку обновляет значение, но ТАКЖЕ увеличивает 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

Решение

Мой ответ заключается в том, чтобы сначала получить идентификатор слова из таблицы и только в том случае, если он не может его вставить. В обоих случаях у вас есть готовый идентификатор.

Я думаю также, что это будет быстрее, так как вы не создаете никаких игнорируемых ошибок в MySQL.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]