刷新页面时,表单数据重新发布到数据库

时间:2015-01-19 02:09:32

标签: php mysql

我正在尝试学习如何制作将数据发布到数据库的注册表单。我无法从教程中获取代码,直到我将其删除。它现在可以正常工作,除非我刷新页面(删除我输入的值以便输入其他条目),它会将原始数据重新发布到数据库表中。

换句话说,如果我输入值Kelly Kau的名字和姓氏,然后点击提交按钮,Kelly和Kau就会输入到数据库表中。但是当我刷新页面时,又添加了一行Kelly和Kau。

有办法阻止这个吗?我正在使用PHP和MySQL。我试图复制的教程是jQuery。最后,我也可以添加一些AJAX。

<form id="signupform" autocomplete="off" method="post" action="" novalidate>
  <table>
    <tr>
    <td class="label"><label id="lfirstname" for="firstname">First Name</label></td>
    <td class="field"><input id="firstname" name="firstname" type="text" value="" maxlength="100"></td>
    <td class="status"></td>
  </tr>
  <tr>
    <td class="label"><label id="llastname" for="lastname">Last Name</label></td>
    <td class="field"><input id="lastname" name="lastname" type="text" value="" maxlength="100"></td>
    <td class="status"></td>
  </tr>
  <tr>
    <td class="label"><label id="lsignupsubmit" for="signupsubmit">Signup</label></td>
    <td class="field" colspan="2"><input id="signupsubmit" name="signup" type="submit" value="Signup"></td>
  </tr>
</table>
</form>
<?php
include('ajax-database/config.php');
$pdo = connect();

try {
  $sql = "INSERT INTO g1_members (firstname, lastname) VALUES  (:firstname, :lastname)";
 $query = $pdo->prepare($sql);
 $query->bindParam(':firstname', $_POST['firstname'], PDO::PARAM_STR);
 $query->bindParam(':lastname', $_POST['lastname'], PDO::PARAM_STR);

 $query->execute();
} catch (PDOException $e) {
 echo 'PDOException : '.  $e->getMessage();
}
?>

2 个答案:

答案 0 :(得分:2)

根据您点击的提交按钮使用条件语句:

<?php
include('ajax-database/config.php');
$pdo = connect();

if(isset($_POST['signup'])){

try {
  $sql = "INSERT INTO g1_members (firstname, lastname) VALUES  (:firstname, :lastname)";
 $query = $pdo->prepare($sql);
 $query->bindParam(':firstname', $_POST['firstname'], PDO::PARAM_STR);
 $query->bindParam(':lastname', $_POST['lastname'], PDO::PARAM_STR);

 $query->execute();

} catch (PDOException $e) {
 echo 'PDOException : '.  $e->getMessage();
}

} // brace for if(isset($_POST['signup']))

?>

或成功查询时的标题重定向:

if($query){
header("Location: http://www.example.com");
exit;
}

  • 理想情况下,如果您不希望插入相同的值,那么最好将给定的列设置为UNIQUE。

答案 1 :(得分:1)

执行你的mysql查询后 重定向到同一页面

header("Location: index.php");