我有以下代码。。。
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(或submit)时,它会对表中所有可见的行执行此操作。第一部分工作:$doUPDATE
,它很好地更新了我的数据库。然而,第二部分不起作用——我一直在运行我的die('SQL MOVE didnt work);
我在这里试图做的是,每当进行更改时都会更新每一行,(检查。)然后,当$n
从0循环到$t
时,如果$OutcomeValue
不为空,则将该特定行从当前数据库中移出,并移到另一个数据库中。
这是因为我试图同时背靠背运行两个mySQLi语句而不起作用的原因吗?我需要在我没有投入的两者之间进行某种突破吗?它生成的实际查询(从echo $sqlMOVE ;
来看,语法很好……我可以在SQL查询窗口中手动运行它而不会出错,只是不在这个嵌套的if语句中。
感谢大家的提示。我把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));
}
}
这是成功的!谢谢