#php #mysql
#php #mysql
Вопрос:
У меня есть запрос MySQL ON DUPLICATE KEY UPDATE
, который я запускаю из PHP-скрипта. Я хотел бы проверить UPDATE
INSERT
, произошло ли или. Как я могу это сделать?
Ответ №1:
«При ОБНОВЛЕНИИ ДУБЛИКАТА КЛЮЧА значение затронутых строк для каждой строки равно 1, если строка вставляется как новая строка, и 2, если обновляется существующая строка».
Вы можете использовать mysql_affected_rows()
для определения количества затронутых строк.
Ответ №2:
Мне пришлось однажды разобраться с этим, поэтому я ссылаюсь на свои заметки по этому вопросу.
Следующий запрос:
INSERT INTO table ... ON DUPLICATE KEY UPDATE ..., id = LAST_INSERT_ID( id)
Где ‘id’ является первичным ключом в таблице, позволяет вызвать mysqli_affected_rows() , который вернет:
- 0 — строка существовала, ничего не обновлялось
- 1 — Строка не существует, вставлена
- существовала 2-строка, что-то обновлено
Комментарии:
1. Спасибо, это полезно знать … хотя я использую mysql, а не mysqli, поэтому я не уверен, допустимо ли значение return 0 для mysql_affected_rows()