PHP регистрационная форма, включая базу данных

Пока я обновляю свой браузер, записи регистрационной формы попадают в базу данных каждый раз, когда я нажимаю "Обновить", профессор сказал мне, чтобы решить эту проблему с помощью LAST_INSERT_ID(),

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

3 ответа

Решение

Рекомендуемый способ - использовать шаблон Post / Redirect / Get. Есть и другие способы достичь того, что вы хотите здесь.

Я не уверен, что ваш профессор просит сделать с последним идентификатором вставки. Может быть, он имеет в виду что-то вроде этого,

    if(isset($_SESSION['last_insert_id'])){ // At the beggining    
              //redirect to a another location
    }

    // Code for insertion goes here

    $_SESSION['last_insert_id'] = $last_insert_id; // Get and store the insertion id as a  session

Я думаю, что вы используете ту же страницу для сохранения данных, если это так, то следуйте следующему методу:

<?php
if(isset($_POST[userName]))
{
  // Put your Registration Operation Code Here

  header('Location: ./Registrationform.php');
}
?>

После вставки базы данных он перенаправляет на ту же страницу. Теперь обновление выполняется методом GET, а не методом POST. Таким образом, вы можете удалить дубликаты записей таким способом.

В соответствии с вашим требованием я использовал последний введенный идентификатор для проверки перед вставкой записей в базу данных.

<?php
session_start();
if(isset($_POST[userID]))
{
  $flag = false;
  if(isset($_SESSION['last_insert_id']))
  {
     if($_SESSION['last_insert_id'] == $_POST[userID])
     {
        $flag = false;
        header('Location: ./Registrationform.php');
     }
     else
     {
        $flag = true;
        $_SESSION['last_insert_id'] = $_POST[userID];
     }
  }

  if($flag == true)
  {
     // Put your Registration Operation Code Here
  }
}
?>
Другие вопросы по тегам