我有一个基于网络的表格,接受学生的信息。在我插入数据后,我希望它仍然可用,即使我刷新浏览器也意味着2行是相同的,但我不想再次插入相同的数据。怎么可能呢?
我的代码在这里:
<form method="post" action="insert.php" >
<table>
<tr>
<td width="22%"> Name</td>
<td width="4%"></td>
<td width="74%"><input type="text" name="name" > </td>
</tr>
<tr>
<td>Information </td>
<td></td>
<td><input type="text" name="infomn" ></td>
</tr>
<tr>
<td>Email </td>
<td></td>
<td><input type="text" name="email" ></td>
</tr>
<tr>
<td>Password </td>
<td></td>
<td><input type="password" name="password" ></td>
</tr>
<tr>
<td colspan="3"> </td>
</tr>
<tr>
<td></td>
<td></td>
<td ><input type="submit" name="submit" value="Insert" >
</td>
</tr>
</table>
</form>
insert.php:
include("connect.php");
if($_POST['submit']){
$name=$_POST[name];
$info=$_POST[infomn];
$emal=$_POST[email];
$password=$_POST[password];
$query = "insert into student(name,designation,email,password) values('$name','$info','$emal','$password')";
mysql_query($query) or die("not successfully insert".mysql_error());
?>}
答案 0 :(得分:1)
在尝试插入数据之前,我会检查您的值是否已填满。
if ($_POST['name']) {
//Validate, escape, insert...
} else {
//Display form...
}
请请make sure the data you insert into the database is escaped,特别是如果您正在使用学生数据。
答案 1 :(得分:1)
目前它看起来像这样:
为避免这种情况,您必须添加
header("Location: index.php");
或类似的代码,以确保在执行数据库执行后用户不会停留在同一页面上。
答案 2 :(得分:0)
浏览器刷新将最后一个操作(再次)发布到服务器。
使用发布/重定向/获取模式(http://en.wikipedia.org/wiki/Post/Redirect/Get),即在成功操作后始终重定向(在您的案例数据库插入中)。
答案 3 :(得分:0)
insert.php:
include("connect.php");
if(isset($_POST['submit'])) { // put isset() for checking if it submitted or not
$name=$_POST['name'];
$info=$_POST['infomn'];
$emal=$_POST['email'];
$password=$_POST['password'];
$query = "insert into student(name,designation,email,password)
values('$name','$info','$emal','$password')";
if(mysql_query($query)) {
header('Location:your_form_page.php'); // redirect to avoid inserting data while refreshing
}else {
mysql_error() };
}
建议:尝试使用 PDO How can I prevent SQL injection in PHP?