CSS导致SQL INSERT执行两次

时间:2014-12-19 11:51:37

标签: php html css phpmyadmin

我的INSERT页面中有一个PHP查询,按预期执行一次,并且正常工作,正如我想要的那样。

if(!$con->query("INSERT INTO contracts (CID, DATE, NUMBER, TITLE, DESCRIPTION) VALUES ('$cid', '" . $con->real_escape_string($date) . "', '" . $con->real_escape_string($number[$counter]) . "', '" . $con->real_escape_string($title[$counter]) . "', '" . $con->real_escape_string($description[$counter]) . "')"))
            {
                printf("Error message: %s\n", $con->error);
            }

现在,我在同一个CSS文件中添加以下PHP以使表格输出更好一点:

<style>
tr:nth-child(even) {
    background-color: e5e4e2;
}
</style>

这使得每隔一行变成灰色,很棒......但是等等!现在我的SQL INSERT发生了两次。我不知道这些是如何连接的,当我删除CSS时,INSERT执行一次就像我需要的一样。

是否有一些jiggery pokery我不明白这里? CSS如何可能影响我的SQL查询?

为了记录我正在使用 XAMPP 用于数据库表的PHP版本5.5.15 phpMyAdmin

编辑:我已经检查了数据库,它正在插入两次。
查询设置为一个按钮,我使用if (isset($_GET['insertIt'])) {// INSERT QUERY,以便用户点击此按钮时:
<a href = 'testing.php?insertIt=true'><button style="height: 30px; margin-left: 10px; margin-right: 10px">2. Insert New Contracts To 'contracts' Table</button></a>
查询已发送。它在没有CSS的情况下工作正常,但是,它运行了两次

编辑2:好的,这是我点击按钮时开发者工具的两个截图。我发现它不是CSS完全省略<style> ... </style>标签;当我离开时,我得到这个:enter image description here
当他们在我的PHP文件中时,我得到了这个:enter image description here我可以接受这个并尝试获取通过分离文件或完全删除标签来解决它,但我仍然想知道为什么会发生这种情况。我不是专家,但我可以看到有insertIt的额外呼叫时没有<style>个标签,并且条目被插入两次 为了记录,我希望能够

  1. 点击按钮
  2. 插入条目
  3. 并刷新页面,因为页面还会显示插入的结果。

1 个答案:

答案 0 :(得分:1)

看看你的代码片段当然不够,但是让我建议你解决方案并解释你在这里做的一些事情。

  1. 在这种情况下使用GET还不够好。我不知道你接下来做了什么(插入记录后的任何重定向?),但我想没有发生任何事情。一个好主意是使用POST,因为你在表中创建了行。
  2. 触发表单的动作是单击,但点击什么?您在链接中有一个按钮。 <a><button></button></a>不是元素是控制元素。我建议将其修复为<button type="submit" style="height: 30px; margin-left: 10px; margin-right: 10px">2. Insert New Contracts To 'contracts' Table</button>并删除<a>,您要发布的网址应来自表单操作属性。如果你真的需要使用JavaScript发布一个事件,这是另一个故事,你提供的代码不足以看到你想要实现的目标。
  3. 当有人可能认为由于HTTP协议标准导致记录创建后重定向很糟糕,但这是在使用表单执行操作后重定向到同一页面的常见做法,以防止意外刷新页面而创建多个记录。< / LI>

    以下是我认为你应该做的伪代码:

    <?php
        if (isset($_POST["...field name..."])) {
           ... perform INSERT ...
           ... do redirect to 'testing.php' ...
        } 
    ?>
    
    <form action="testing.php" method="post">
        ... fields ...
       <button type="submit" style="height: 30px; margin-left: 10px; margin-right: 10px">2. Insert New Contracts To 'contracts' Table</button>
    </form>
    

    什么都不应该发生两次。如果您需要更多帮助 - 请成为我的客人并询问。