我正在尝试学习如何制作将数据发布到数据库的注册表单。我无法从教程中获取代码,直到我将其删除。它现在可以正常工作,除非我刷新页面(删除我输入的值以便输入其他条目),它会将原始数据重新发布到数据库表中。
换句话说,如果我输入值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();
}
?>
答案 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;
}
答案 1 :(得分:1)
执行你的mysql查询后 重定向到同一页面
header("Location: index.php");