2016-03-27 9 views
0

Dies ist mein Code:Daten in verschachtelten foreach-Schleifen in Update-Abfrage verwendet

session_start(); 
/* loops through each row in the global $_SESSION variable which 
contains the array and uses the $value to GET the data in the text 
boxes and output them */ 

// studevent_result = 
foreach ($_SESSION['arrayNameResult'] as $value) { 
    $studResult = $_GET[$value]; 
    echo $studResult; 
    echo "<br>"; 
} 

// result_postion = 
foreach ($_SESSION['arrayNamePosition'] as $value) { 
    $studPosition = $_GET[$value]; 
    echo $studPosition; 
    echo "<br>"; 
} 

echo "<br>"; 

// stud_id = 
foreach ($_SESSION['arrayId'] as $value) { 
    echo $value; 
    echo "<br>"; 
} 

// UPDATE query, this will update the studevent_result and result_position 
// column in the database for the specific stud_id. 
$updateQuery = " 
    UPDATE result 
    SET studevent_result = '00:20:33', 
     result_position = '6' 
    WHERE result.stud_id = '12' 
"; 

$updateRow = mysqli_query($conn, $updateQuery); 

I $ _SESSION Variablen verwenden, die alle ein Array speichern. Ich extrahiere die Ergebnisse dieser Arrays mit foreach-Schleifen.

In $ updateQuery möchte ich studevent_result = zu den Ergebnissen meiner ersten foreach-Schleife, result_position = zu den Ergebnissen der zweiten foreach-Schleife oben und result.stud_id = zu den Ergebnissen der dritten foreach-Schleife oben machen .

Nach mir den Code bearbeite meinen Code nun wie folgt aussieht:

foreach ($_SESSION['arrayNameResult'] as $value) { 
$studResult = $_GET[$value]; 
     foreach ($_SESSION['arrayNamePosition'] as $data) { 
      $studPosition = $_GET[$data]; 
    foreach ($_SESSION['arrayId'] as $idValue) { 
echo $idValue; 
$updateQuery = " 
    UPDATE result 
    SET studevent_result = '$studResult', 
     result_position = '$studPosition' 
    WHERE result.stud_id = '$idValue' 
"; 
$updateRow = mysqli_query($conn, $updateQuery); 
      } 
     } 
    } 

I Schleifen verschachtelt die foreach. Das Problem ist nun, dass für die letzte foreach-Schleife in den verschachtelten Schleifen $ idValue in der Abfrage nur das letzte Element im Array $ _SESSION ['arrayId'] verwendet. Wie kann ich das beheben, um das gesamte Array durchzulaufen, so dass die Abfrage alle Werte im Array verwendet?

Vielen Dank im Voraus.

+0

Ihr Code ist anfällig für SQL-Injektion. Bitte lesen Sie [Wie kann ich SQL-Injection in PHP verhindern?] (Http://StackOverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) für Informationen, wie man es beheben kann . –

Antwort

1

Wenn ich Ihre Frage verstanden dies sollte Ihnen helfen,

session_start(); 
$i = 0; 
$studResult = array(); 
foreach ($_SESSION['arrayNameResult'] as $value) { 
$studResult[$i] = $_GET[$value]; 
$i++; 
} 

$studPosition= array(); 
$i=0; 
foreach ($_SESSION['arrayNamePosition'] as $value) { 
$studPosition[$i] = $_GET[$value]; 
$i++; 
} 


$stud_id = array(); $i=0; 
foreach ($_SESSION['arrayId'] as $value) { 
$stud_id[$i] = $value; $i++; 
} 

for($j =0; $j<$i; $j++){ 
    $updateQuery = " 
    UPDATE result 
    SET studevent_result = '$studResult[$j]', 
    result_position = '$studPosition[$j]' 
    WHERE result.stud_id = '$stud_id[$j]' 
    "; 

    $updateRow = mysqli_query($conn, $updateQuery); 
} 

Hoffe, dass es nützlich sein wird. Happy coding :)

+0

Vielen Dank für die Antwort, ich habe es versucht, aber aus irgendeinem Grund verwendet es nur das letzte Element in den Array-Ergebnissen '$ Stud_id' und nicht alle Werte. Muss ich die Abfrage wiederholen? – SubZero

+0

Ich dachte, du willst nur einmal updaten. –

+0

Ja, Sie müssen die Abfrage loopen. –

Verwandte Themen