Php 以前插入的值在页面刷新时自动插入

Php 以前插入的值在页面刷新时自动插入,php,mysql,html,mysqli,Php,Mysql,Html,Mysqli,通过PHP通过html表单在数据库中插入值的查询或解决方案是什么,但每次我刷新页面时,之前插入的值都会再次插入 if (isset($_POST["insert1"])) { $inrtno = $_POST["inrouteno"]; $instp = $_POST["instop"]; if ($inrtno !=''||$instp !='') { $query = mysqli_query($datacon,"REPLACE INTO `sto

通过PHP通过html表单在数据库中插入值的查询或解决方案是什么,但每次我刷新页面时,之前插入的值都会再次插入

if (isset($_POST["insert1"])) { 
    $inrtno = $_POST["inrouteno"];
    $instp = $_POST["instop"];

    if ($inrtno !=''||$instp !='') {
        $query = mysqli_query($datacon,"REPLACE INTO `stops`(`sn`, `routeno`, `stop`) VALUES ('NULL','$inrtno','$instp')");
        echo "<script type='text/javascript'>alert('Insertion Successful !!!')</script>";
    } else {
        echo "<p>Insertion Failed <br/> Some Fields are Blank....!!</p>";   
    }
}
if(isset($\u POST[“insert1”]){
$inrtno=$_POST[“inrouteno”];
$instp=$_POST[“instop”];
如果($inrtno!=''| |$instp!=''){
$query=mysqli_query($datacon,“替换为`stops`(`sn`、`routeno`、`stop`)值('NULL','$inrtno','$instp'));
回显“警报('插入成功!!!')”;
}否则{
echo“插入失败
某些字段为空….!!

”; } }
每当您刷新页面时,都会重新提交POST变量,因此PHP仍在运行。此外,您的查询可能会出现错误。考虑使用.

当你重新加载页面时,浏览器要求你重新提交请求,所以该值再次被传输。因此,在插入数据以检查记录是否已存在时,请设置一个条件。

如前所述(我个人理解),每次刷新页面时,都会再次发送请求。请注意,我忘记了,谢谢你@ADyson

因此,一个解决方案是在插入后将用户重定向到相同的表单

假设此文件为test.php,例如:

if (isset($_POST["insert1"])) { 
    $inrtno = $_POST["inrouteno"];
    $instp = $_POST["instop"];

    if ($inrtno !=''||$instp !='') {
        $query = mysqli_query($datacon,"REPLACE INTO `stops`(`sn`, `routeno`, `stop`) VALUES ('NULL','$inrtno','$instp')");
        echo "<script type='text/javascript'>alert('Insertion Successful !!!')</script>";

        sleep('3');
        header('Location: /test.php');
        exit();
    } else {
        echo "<p>Insertion Failed <br/> Some Fields are Blank....!!</p>";   
    }
}
if(isset($\u POST[“insert1”]){
$inrtno=$_POST[“inrouteno”];
$instp=$_POST[“instop”];
如果($inrtno!=''| |$instp!=''){
$query=mysqli_query($datacon,“替换为`stops`(`sn`、`routeno`、`stop`)值('NULL','$inrtno','$instp'));
回显“警报('插入成功!!!')”;
睡眠('3');
标题('Location:/test.php');
退出();
}否则{
echo“插入失败
某些字段为空….!!

”; } }
大多数web浏览器在重新发布可能导致不一致的内容时通常会发出警告。如果您的数据模型不允许重复,那么您应该在MySQL端设置约束。事实上,即使删除它,浏览器也会再次发送它。那么,在插入帖子后将用户重定向到同一页面应该可以解决这个问题。