Как избежать множественной вставки одних и тех же записей в MySQL PHP - PullRequest
1 голос
/ 03 октября 2009

Я вставляю значение в таблицу, используя php-mysql, чтобы оно вставлялось правильно. Файл вставки в php вызывается через запрос ajax. Моя проблема в некоторых версиях Firefox, запрос запускается дважды в несколько раз, и записи вставляются 6 раз с одними и теми же данными в таблицу ... Как предотвратить такую ​​ситуацию, не используя уникальную концепцию ...

Ответы [ 4 ]

2 голосов
/ 03 октября 2009

Похоже, что SQL делает то, что ему говорят. Вам решать не выполнять запрос с одними и теми же данными снова и снова.

Как вы сказали "в некоторых версиях Firefox запрос запускается дважды", проблема, скорее всего, связана с кодом вашего клиента, опубликуйте этот код, чтобы мы могли вам помочь.

(Это должен был быть комментарий, но у меня слишком мало очков репутации.)

0 голосов
/ 03 октября 2009

Потому что вы не хотите идти с УНИКАЛЬНЫМ индексом ...

... Подобные проблемы я обнаружил, просто запросив таблицу перед вставкой, чтобы посмотреть, существует ли уже запись. Я также установил ограничение по времени для поиска.

Вот что я делаю:

  1. Я проверяю данные, если они действительны для вставки в таблицу.
  2. Я использую эти точные данные для выбора в таблице, ограниченного всеми записями за последние 5 минут.
  3. Если выборка не возвращает результата, я вставляю данные в таблицу, в противном случае я игнорирую их как «запись дублирования».
0 голосов
/ 03 октября 2009

Использование jQuery может помочь вам (если вы еще этого не сделали). Вы можете убедиться, что ваш код не выполняется слишком рано с помощью встроенного в jquery $ (document) .ready () события .

Также посмотрите, что вызывает вызов ajax, если это делается больше раз, чем вы ожидали. Вы также можете выполнить некоторую проверку на стороне сервера, чтобы убедиться, что запрос еще не отправлен.

0 голосов
/ 03 октября 2009

MySQL предлагает команду REPLACE, которая похожа на INSERT, но молча игнорирует дубликаты. Документация здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...