2017-01-30 19 views
0

FOREACHループは、配列の最初の要素を取り上げていません。FOREACHループによるPHPのループ

私は、次のを持って提出フォームを持っている:

<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

を変更することです$_POST["UniqueID"] を使用** **ないでください。 **これまで**。 **つかいます**。 'mysql_ *' –

+1

あなたの質問に直接関係しているわけではありませんが、あなたの入力を消毒することを強くお勧めします。 http://stackoverflow.com/questions/129677/whats-the-best-method-for-sanitizing-user-input-with-php – pandoraEudora

+0

@kennethPhoughあなたのご意見ありがとうございます。一度このforeachループが働くと消毒剤を見てください。ありがとう – DCJones

答えて

3

あなたのforeachの中で初期化さ$uniqueID変数を持っていますが、あなたの$ updateSQLにあなたはまだあなたが必要とするすべてはあなたの$updateSQL

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