我有以下代码...多mysqli_query语句IF语句不工作
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数据库填充的。当我更改一个字段并按回车键(或提交)时,它会为表中所有可见的行执行此操作。第一部分工作:$doUPDATE
,它更新我的数据库就好了。然而,第二部分是不工作 - 我一直运行到我的die('SQL MOVE didnt work);
我在这里要做的是每更新每行更改(检查。),然后,因为$n
正在循环从0到$t
,如果$OutcomeValue
不为空,请将该特定行移出当前数据库并移入另一行。
这是不工作的原因,因为我试图同时运行两个mySQLi语句的背靠背?我不需要在两者之间进行某种突破吗?它生成的实际查询(来自echo $sqlMOVE ;
是精细的语法...我可以在SQL查询窗口中手动运行而不会出现错误,只是不会在此嵌套if语句中运行它。
只注意到你正在使用您的$ sqlMove多个查询。你可能想看看多语句:http://php.net/manual/en/mysqli.multi-query.php – jeff 2014-09-30 22:35:54
你不能使用'mysqli_query()' - >'“执行2个查询INSERT INTO结果SELECT * FROM报告WHERE LineID = $ LineID; DELETE FROM report LineID = $ LineID;''。你需要做2'mysqli_query()'或者使用'mysqli_multi_query()' – Sean 2014-09-30 22:35:56
注意:你缺少连接 - $ mysqli_error - >'die('SQL Move did not work:'。mysqli_error($ con));' – Sean 2014-09-30 22:38:09