Проблема с дублированием в PHP / MYsql - PullRequest
3 голосов
/ 11 июля 2011

Я вставляю строку в таблицу MySQL. Строка успешно вставляется в таблицу. Но проблема в том, что всякий раз, когда я обновляю страницу, в базу данных добавляется новая строка.

Как это предотвратить?

Ответы [ 3 ]

7 голосов
/ 11 июля 2011

Использование шаблона Post / Redirect / Get .

Post / Redirect / Get (PRG) - это общий шаблон проектирования для веб-разработчиков, помогающий избежать определенных повторных представлений форми позволяют пользовательским агентам вести себя интуитивно с закладками и кнопкой обновления.

В PHP это выглядит так, как правило ...

<?php

handleForm($_POST);

header('Location: next-page.php');
exit;

Очевидно, handleForm() - этозаменить ваш код, который обрабатывает вставки и т. д.

1 голос
/ 11 июля 2011

Это проблема браузера. Они публикуют данные при обновлении. Чтобы этого не происходило, вам придется проверять дублирование данных в коде каждый раз, когда вставляется новая запись. Это общепринятая практика, когда необходимо предотвратить дублирование данных.

В другом случае, когда ожидаются и допускаются подлинные дубликаты данных, вы можете перенаправлять пользователя на одну и ту же страницу регистрации после каждой вставки с помощью header("Location: {$location}");. Это очистит данные POST браузера.

0 голосов
/ 11 июля 2011

Использовать первичный ключ в таблице MySQL. Сделать любой столбец столбцом первичного ключа

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