PHP Insert 语句在 Firefox 中运行两次,一次在 IE 中运行


PHP Insert Statement running twice in Firefox, once in I.E

我真的被困在这里了。 我有一个插入语句在 Firefox 上运行两次,但(正确)在 IE 中只运行一次。

是什么原因导致 Firefox 运行两次插入语句? 它只运行此查询两次,而不运行页面上的其他查询。 我甚至注释掉了除我在下面发布的内容之外的所有其他代码,它仍然在 Firefox 中插入了两次。

if((isset($_GET['stepNum']))&&(isset($_GET['idNum']))){
    $stepNum = $_GET['stepNum'];
    $idNum = $_GET['idNum'];
    $startCycleNum = 1;
    $startCycleStatus = 1;
    $cycleGo = true;
    }//end isset if statement
try {
    if ($cycleGo == true) {
$stmtC = $db->prepare('INSERT INTO mytable (cycleNum, cycleStatus, processID) VALUES (:cycleNum, :cycleStatus, :processID)');
$stmtC->execute(array(':cycleNum' => $startCycleNum, ':cycleStatus' => $startCycleStatus, ':processID' => $idNum));
$cycleGo = false; 
$newCycle = $db->lastInsertId();
    }
}//end try
catch (PDOException $ex) {
    echo '<h5>There was an error saving the new cycle.  Please try again.</h5>';
}//end catch

任何想法将不胜感激。 我尝试清除火狐中的缓存无济于事。

编辑:来自提交表单的代码得到步骤.php

if ($stepNum != 'none') {
    echo '<form name="addNewForm" action="createcycleone?idNum='.$idNum.'stepNum='.$stepNum.'" method="post">
    <table width = "100%" id="formfields">';
    //form inputs
echo '<tr><td colspan="2">&nbsp;</td></tr>
<tr><td colspan="2" style="text-align:center"><input type="submit" value="Save and Create Cycle"></input></td></tr>
</table>
</form> ';
}

编辑:来自php页面的代码调用getSteps.php加载正确数量的步骤(字段)

//get the stepNum
if((isset($_GET['nid']))&&(isset($_GET['idNum']))){
$stepNum = $_GET['nid'];
$idNum = $_GET['idNum'];
}
  <form id="stepsForm" name="stepsForm">
      <table width ="100%" id="stepfield">
        <tr><td><strong>Number of Steps:</strong></td>
        <td><select name="getSteps" id="getSteps" onchange="$('#formContainer1').load('../files/createUAT/getSteps.php?nid='+this.value+'&idNum='+<?php print $idNum; ?>);">
        <option value="none">Select a Number</option>
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">5</option>
        <option value="6">6</option>
        <option value="7">7</option>
        <option value="8">8</option>
    </select>
</td></tr></table>
</form>

<div id ="formContainer1" class="formContainer1">
</div>

不确定这是否导致了问题,但请更改此...

'idNum='+<?php print $idNum; ?>

。对此..

'&idNum=<?php print $idNum; ?>'

这可能会导致一些跨浏览器差异。

我强烈建议您关闭 php 脚本中的错误报告,看看问题是否仍然存在。error_reporting(0); 我在使用Firefox时遇到了同样的问题,并且有效。否则,请查看类似的问题和建议

如果你在 <HTML> 标签之前输出任何文本,Firefox 有一个重新加载页面的坏习惯。这意味着,您的代码将执行两次。

我建议确保任何输出(查询结果,调试消息等)都正确位于<body> html标签内,而不是在标签外。

当我将查询输出到标记的最开头(用于调试)时,这件事让我发疯了一次。

如果是这样的话,我会惊讶于这种令人讨厌的行为仍然存在。

编辑:哦,我刚刚看到这个问题来自2013年... xD。不知何故,堆栈溢出弹出了这个,我认为这是最近的一个问题。

好吧,无论如何,这可能是您的答案!