2016-03-27 97 views
0

使用嵌套foreach循環這是我的代碼:數據在更新查詢

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

我用$ _SESSION變量,所有的存儲陣列。我使用foreach循環提取這些數組的結果。

在$ updateQuery中,我想讓studevent_result =我上面的第一個foreach循環的結果,result_position =上面的第二個foreach循環的結果,result.stud_id =上面的第三個foreach循環的結果。

我編輯的代碼現在我的代碼看起來像這樣經過:

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

我嵌套在foreach循環。但現在的問題是,對於嵌套循環中的最後一個foreach循環,查詢中的$ idValue僅使用數組$ _SESSION ['arrayId']中的最後一個元素。我怎樣才能解決這個問題來循環整個數組,以便查詢使用數組中的所有值?

在此先感謝。

+0

您的代碼易受SQL注入攻擊。請閱讀[如何防止SQL注入在PHP?](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)的信息如何解決它。 –

回答

1

如果我明白你的問題,這會幫助你

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

希望這會有所幫助。快樂編碼:)

+0

謝謝你的回答,我試過這個,但由於某種原因,它只使用數組結果'$ stud_id'中的最後一個元素,而不是所有的值。我必須循環查詢嗎? – SubZero

+0

我以爲你只想更新一次。 –

+0

是的,你需要循環查詢。 –