Ваше определение таблицы (из комментария) включает в себя:
UNIQUE KEY (time)
Таким образом, ваша таблица может содержать только одну строку для любого значения time
.
Кроме того, вы используете REPLACE
в своем SQL. Поэтому, когда вы выполняете свой оператор во второй раз, ваша база данных обнаруживает, что существует существующая строка с тем же уникальным ключом, поэтому обновляет строку, а не вставляет новую.
Мне кажется, что ваш код работает точно так, как ожидалось. Если вы хотите добавить больше строк, вам нужно изменить значение в $time
.
Обновление:
Из вашего комментария к другому ответу.
Я тестировал с INSERT, но не работает: DBD :: mysql :: st выполнить не удалось: Дублирующаяся запись '2019-01-04 17:45:00' для ключа 'time'
Да! Это именно то, что должно произойти. Объявляя вам time
столбец как UNIQUE
, вы сообщаете своей базе данных, что каждое временное значение может встречаться в вашей таблице только один раз. Поэтому, если вы попытаетесь вставить другую строку с тем же временем (что вы и делаете), вы получите эту ошибку.
Таким образом, вы переключаетесь с INSERT
на REPLACE
, и вы не получаете ошибки, а вставляете только одну строку - потому что именно это REPLACE
делает.
В приведенном вами примере того, что вы хотите в таблице, в столбце времени есть два одинаковых значения. Это не может произойти, пока у вас есть определение UNIQUE
в этом столбце. Это именно то, что есть кнопка UNIQUE
, чтобы предотвратить.
Вам нужно отступить назад и подумать, что именно вы хотите в таблице. Если вы хотите дублировать значения времени в таблице, вам нужно удалить определение ключа UNIQUE
в таблице (а затем изменить REPLACE
на INSERT
).