2017-01-30 269 views
0

我有一個FOREACH循環,它不拾取數組中的第一個元素。PHP循環通過一個FOREACH循環

我有一個具有以下內容的提交形式:

<input name="repaired[<?php echo $row_Faults['UniqueID']; ?>]" type="checkbox" id="repaired" value="1" class="required"/> 

如果我呼應$ _ POST [「修補」]數組我看到了兩個記錄,但在運行代碼時沒有被處理的第一個記錄。

foreach($_POST['repaired'] as $uniqueID => $repairedValue){ 

$updateSQL = sprintf("UPDATE ".$Hist." SET Status=%s, LettoStatus=%s WHERE UniqueID= '".$_POST["UniqueID"]."'", 
GetSQLValueString($_POST['Status'] = $StatusCode , "int"), 
GetSQLValueString($_POST['LettoStatus'] = $LettoCode , "int")); 

mysql_select_db($database_iMaint, $iMaint); 
$Result1 = mysql_query($updateSQL, $iMaint) or die(mysql_error()); 
} 

任何人都可以看到我出錯的地方。

非常感謝您的時間。

+4

**不要**。 ** **永遠。 **使用**。 'mysql_ *'。 –

+1

儘管與您的問題沒有直接關係,但我強烈建議您對輸入進行消毒。看到http://stackoverflow.com/questions/129677/whats-the-best-method-for-sanitizing-user-input-with-php – pandoraEudora

+0

@kennethPhough感謝您的意見,一旦我得到這個foreach循環工作,我會然後看看衛生。謝謝 – DCJones

回答

3

在你的foreach,但在$即updateSQL你$uniqueID變量初始化你還在用$_POST["UniqueID"] 因此,所有你需要的是改變你的$updateSQL

$updateSQL = sprintf("UPDATE ".$Hist." SET Status=%s, LettoStatus=%s WHERE 
    UniqueID= '".$uniqueID."'",  
    GetSQLValueString($_POST['Status'] = $StatusCode , "int"), 
    GetSQLValueString($_POST['LettoStatus'] = $LettoCode , "int"));