我创建了在数据库中插入数据的表单,但每次重新加载页面时,数据都会重新插入。 我使用unset($ _ POST)来修复它,但它没有修复。
如何让它只插入一次。
<form method="post" class="job">
<input type="text" placeholder=" course name" name="name" class="form-control input-lg">
<input type="text" placeholder=" country " name="country" class="form-control input-lg">
<input type="text" placeholder=" company " name="company" class="form-control input-lg">
<input type="date" placeholder=" start " name="start" class="form-control input-lg">
<input type="date" placeholder=" end " name="end" class="form-control input-lg">
<input type="text" placeholder="link" name="link" class="form-control input-lg">
<button type="submit" class="btn btn-warning btn-lg btn-block" name="addcourse" id="addcourse"> ADD COURSE </button>
</form>
</div>
<div class="col-lg-4"></div>
</div>
<?php
include("connect.php");
if (isset($_POST['addcourse'])){
$name = $_POST["name"];
$country = $_POST["country"];
$company = $_POST["company"];
$link = $_POST["link"];
$start=$_POST["start"];
$end=$_POST["end"];
$newcourse="INSERT INTO courses (name,country,company,start,end,link) VALUES ('$name','$country','$company','$start','$end','$link')";
if(!empty($name)&&!empty($country)&&!empty($company)&&!empty($link)&&!empty($start)&&!empty($end)){
if(mysql_query($newcourse)){
unset($_POST);
echo "<script> alert('insert successful'); </script>";
}
else{ unset($_POST);
echo "<script>alert('error'); </script>";
}}
else { unset($_POST);
echo "<script>alert('fill in all field'); </script>";}
}
?>
答案 0 :(得分:1)
首先,我认为您应该了解PHP是无状态的,每次调用脚本时,它都不会考虑以前的操作,例如POST数组的未设置,这意味着unset($_POST)
是无用的。
您的问题是,每次重新加载页面时,始终会设置$_POST['addcourse']
。
我建议使用此if (isset($_POST['addcourse'])){
更改此if (!empty($_POST['name'])){
,这意味着只有在设置了名称字段且名称不为空时才会执行查询。
您还应该使用mysqli函数和预处理语句来阻止sql注入,就像在example中一样。
答案 1 :(得分:0)
由于请求仍包含所有值,因此刷新时,Php将再次获得相同的值。 在if语句中,检查查询是否成功,添加以下行:
container
如果您希望用户再次结束同一个地方,请写下:
header('Location: <where you want the user to be sent to>');