У меня есть mysql для дублирования ключевого оператора.
mysql_query("INSERT INTO statistics (classify, apply) VALUES ('$classify', 1) ON DUPLICATE KEY UPDATE apply = apply + 1"); id classify apply 1 A 1
но он не обновил существующую строку, и она продолжает добавлять другую строку. Где проблема?
Вероятно, classify
столбцов не unique
. В таблице должно быть поле UNIQUE
чтобы сделать работу ON DUPLICATE KEY UPDATE
. Если вы его не установили, вы можете выполнить это заявление ниже.
ALTER TABLE statistics ADD CONSTRAINT tb_uq UNIQUE (classify)
ON DUPLICATE KEY
обновит строку только тогда, когда вы попытаетесь вставить запись, которая будет вызывать ошибку с повторяющимися ключами (например, состояния имен). Таким образом, это происходит, только если вы используете уникальный ключ или первичный ключ для этого столбца. Похоже, что вы не создали уникальный ключ для столбца classify
.