2017-01-30 3 views
0

Ich habe eine FOREACH-Schleife, die nicht das erste Element im Array aufnimmt.PHP Looping durch eine FOREACH-Schleife

Ich habe ein Formular, das die folgenden hat:

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

Wenn ich die $ _POST [ ‚Reparatur‘] Array echo Ich sehe zwei Aufzeichnungen, aber wenn der Code ausgeführt wird, der erste Datensatz ist nicht verarbeitet worden ist .

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()); 
} 

Kann jemand sehen, wo ich falsch liege.

Vielen Dank im Voraus für Ihre Zeit.

+4

** ** Sie nicht zu ändern. **Je**. **Benutzen**. 'mysql_ *'. –

+1

Obwohl nicht direkt mit Ihrer Frage verbunden, empfehle ich dringend, Ihre Eingaben zu bereinigen. Siehe http://stackoverflow.com/questions/129677/whats-the-best-method-for-sanitizing-user-input-with-php – pandoraEudora

+0

@kennethPhough danke für Ihre Eingabe, sobald ich diese foreach-Schleife arbeite ich werde dann sieh dir die Desinfektion an. Danke – DCJones

Antwort

3

Sie haben $uniqueID Variable in Ihrem foreach initialisiert, aber in Ihrem $ UpdateSQL noch Sie $_POST["UniqueID"] verwenden Also alles, was Sie brauchen, ist Ihr $updateSQL

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