2014-09-30 217 views
-1

我有以下代碼...多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語句中運行它。

+1

只注意到你正在使用您的$ sqlMove多個查詢。你可能想看看多語句:http://php.net/manual/en/mysqli.multi-query.php – jeff 2014-09-30 22:35:54

+0

你不能使用'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

+0

注意:你缺少連接 - $ mysqli_error - >'die('SQL Move did not work:'。mysqli_error($ con));' – Sean 2014-09-30 22:38:09

回答

0

感謝您提供大家的提示。我混淆了multi_query幾個小時,嘗試了過程和麪向對象的方法,並且我無法執行它。我最終使用了@Sean推薦的上面的代碼,並將其分解爲兩個單獨的查詢,這些查詢運行良好。

​​

,這是成功的!謝謝!