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

时间:2018-08-24 07:49:14

标签: php mysql html5 mysqli

可能是查询,还是通过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>";   
    }
}

3 个答案:

答案 0 :(得分:3)

每次刷新页面时,您都在重新提交POST变量,因此PHP仍然可以运行。此外,您的查询有SQL injection的危险。考虑使用PDO

答案 1 :(得分:1)

如前所述(据我个人所知),每次刷新页面时,都会再次发送请求。请记住我,忘记了,谢谢@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>";   
    }
}

答案 2 :(得分:0)

当您重新加载页面时,浏览器会要求您重新提交请求,因此该值将再次被传输。因此,当您插入数据时要检查记录是否已经存在。