单个php IF语句中的多个mysqli_query语句不起作用

时间:2014-09-30 22:25:52

标签: php sql mysqli

我有以下代码......

for ($n = 0, $t = count($_POST['PMComments']); $n < $t; $n++) {
$UpdateValue             = $_POST['Update'][$n];
$PMCommentsValue         = $_POST['PMComments'][$n];
$PMMRecommendationsValue = $_POST['PMMRecommendations'][$n];
$OutcomeValue            = $_POST['Outcome'][$n];
$LineID                  = $_POST['LineID'][$n];

$sqlUPDATE = "UPDATE report SET PMComments = '$PMCommentsValue' , PMMRecommendations = '$PMMRecommendationsValue' , Outcome = '$OutcomeValue' WHERE LineID = $LineID ;";
echo $sqlUPDATE . "<br>";  //this echos back the entire SQL entry that will be made
$doUPDATE = mysqli_query($con, $sqlUPDATE);
if (!$doUPDATE) {
    die('Could not update data: ' . mysqli_error());
}

if ($OutcomeValue <> 'null') {                  

$sqlMOVE = "INSERT INTO results SELECT * FROM report WHERE LineID = $LineID ; DELETE FROM report where LineID = $LineID ;";
echo $sqlMOVE ;
$doMOVE = mysqli_query($con, $sqlMOVE);
  if (!$doMove) {
  die('SQL Move didnt work: ' . mysqli_error());
  }  
}  

}

代码的第一部分工作得很好 - 我在一个从mySQL数据库填充的表中有一些列和一些下拉列表。当我更改字段并按Enter键(或提交)时,它会对表中的所有可见行执行此操作。第一部分工作:$doUPDATE,它更新我的数据库就好了。但是,第二部分不起作用 - 我一直在运行die('SQL MOVE didnt work);

我想在这里做的是每当进行更改时更新每一行(检查。),然后,当$n从0循环到$t时,如果$OutcomeValue 1}}为非null,将该特定行移出当前数据库并移到另一个数据库中。

这是不起作用的原因,因为我试图同时运行两个mySQLi语句背靠背?我是否需要在两者之间进行某种突破?它生成的实际查询(来自echo $sqlMOVE ;语法很好......我可以在SQL查询窗口中手动运行它而不会出现错误,只是在这个嵌套的if语句中没有。

1 个答案:

答案 0 :(得分:0)

感谢大家的提示。我用multi_query搞砸了几个小时,尝试了程序和OO方法,我无法让它执行。我最终选择了上面推荐的@Sean并将其分成两个单独的查询,这些查询工作正常。

if ($OutcomeValue <> 'null') {                  

  $sqlMOVE  = "INSERT INTO results SELECT * FROM report WHERE LineID = $LineID ;" ;
  $sqlDELETE = "DELETE FROM report where LineID = $LineID ;" ;
  $doMOVE = mysqli_query($con, $sqlMOVE);
  if (!$doMOVE) 
    {
      die('Could not MOVE data: ' . mysqli_error($con));
    }
  $doDELETE = mysqli_query($con, $sqlDELETE);
  if (!$doDELETE) 
    {
      die('Could not DELETE data: ' . mysqli_error($con));
    } 
}

这很成功!谢谢!