我正在尝试学习如何制作将数据发布到数据库的注册表格。在我将其剥离之前,我无法从教程中获得代码。现在,它可以正常工作,但是如果我刷新页面(以删除键入的值,以便可以键入其他条目),则它将原始数据重新发布到数据库表中。

换句话说,如果我输入名字和姓氏的值Kelly Kau,然后单击Submit按钮,则会在数据库表中输入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();
}
?>

最佳答案

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

<?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。

10-08 09:36
查看更多