重复记录插入页面刷新PHP

时间:2015-05-30 15:23:48

标签: php insert duplicates

每当我第一次输入值并添加记录时,它就会完美地添加,但每当我通过按F5刷新浏览器时它会显示消息 "您正在查找的页面使用了您输入的信息..."并插入重复记录。 HTML代码定义如下:

  <?php include("Connection.php"); ?>


  <form  role="form" method="post">
                              <div class="col-md-6">
                                  <div class="form-group">
                                      <label>Type Name</label>
                                      <input name="emptype" class="form-control" placeholder="Employee ID">
                                  </div>
                                  <div  class="form-group">
                                      <label>Type Description</label>
                                      <input name="typedecs" class="form-control" placeholder="First Name">
                                  </div>





                              </div>

                              <div class="col-md-12 text-right">
                                <button type="submit" name="addtype" class="btn btn-primary">Add Type</button>
                                <button type="reset" class="btn btn-default">Reset</button>
                            </div>
</form>

below is my PHP Code


     <?php

           $emptype=$_POST['emptype'];
         $typedesc=$_POST['typedecs'];
              if(isset($_POST['addtype']))
              {

         $query=mysql_query("insert into emptype(typename,typedesc)values('$emptype','$typedesc')")or die("<script>alert('Error');</script>");


          echo '<script>showAlert();window.setTimeout(function () {HideAlert();},3000);</script>';

我缺少什么?请帮助。

3 个答案:

答案 0 :(得分:2)

建议:使用mysqli_ *或PDO而不是mysql_ *函数,但是你已经编写了代码,所以我也给了代码。

只需运行一个select查询来检查数据库中是否已存在该记录(如果存在),则不要再次插入。

++

答案 1 :(得分:0)

一个选项可以是测试数值是否已存在于您的数据库中。

来源:来自PHP.net - mysql_query

的示例
// Formulate Query
// This is the best way to perform an SQL query
// For more examples, see mysql_real_escape_string()
$query = sprintf("SELECT * FROM emptype 
    WHERE typename='%s' AND typedesc='%s'",
    mysql_real_escape_string($emptype),
    mysql_real_escape_string($typdesc));

// Perform Query
$result = mysql_query($query) or die(mysql_error());

// Get num rows
$num_rows = mysql_num_rows($result);

// If $num_rows is False - It's not a duplicate
if(!$num_rows)
...

考虑使用PDO PHP.net - PDO - 对mysql函数进行折旧。

答案 2 :(得分:0)

我认为这是因为php脚本(插入查询)位于HTML表单的同一页面,因此当您刷新页面时,您告诉浏览器使用以前的数据再次调用php脚本。所以为了防止将HTML表单与php分开,所以你的代码应该像: 1- HTML.php

<?php include("Connection.php"); ?>
<form  role="form" method="post" action="Action.php">
                          <div class="col-md-6">
                              <div class="form-group">
                                  <label>Type Name</label>
                                  <input name="emptype" class="form-control" placeholder="Employee ID">
                              </div>
                              <div  class="form-group">
                                  <label>Type Description</label>
                                  <input name="typedecs" class="form-control" placeholder="First Name">
                              </div>
                        </div>
                          <div class="col-md-12 text-right">
                           <input type="submit" value="submit">
                        </div> </form>

2- Action.php

<?php include("Connection.php");
       $emptype=$_POST['emptype'];
     $typedesc=$_POST['typedecs'];
          if(isset($_POST['addtype']))
          {

     $query=mysql_query("insert into emptype(typename,typedesc)values('$emptype','$typedesc')")or die("<script>alert('Error');</script>");

      echo '<script>showAlert();window.setTimeout(function () {HideAlert();},3000);</script>';  echo "<meta http-equiv='refresh' content='0;url=html.php'>";

&GT;

这将使html.php页面调用Action.php页面当按下提交按钮然后执行php脚本然后它会再次将你重定向到html.php页面