2014-03-29 49 views
0

我有一張表,其中存儲了在一個班級中註冊的學生列表,以及他們各自的成績。它有STUD_IDSTUD_GRADE作爲列,並且STUD_GRADE的默認值是NA。在PHP和MySQL中使用循環的多個更新查詢

我想要做的是顯示錶格中的所有學生,以及他們旁邊的成績文本框,當按下提交按鈕時,所有行都會被更新。

我使用此代碼顯示它們:

$query = "SELECT stud_id FROM tblgrade"; 
    $result = mysql_query($query,$db) or die (mysql_error($db)); 
    while($row = mysql_fetch_array($result)) 
    { 
     extract($row); 

     echo "<tr><td><input type='hidden' value='$stud_id' name='id'/> stud_id </td> 
     <td><input type='text' size='10' name='grade'></td> 
     <tr>"; 
    } 

    ?> 

我所試圖做的是無論是在查詢本身或PHP函數使用循環更新NA成績。我已經嘗試了很多東西,但我真的很難做出正確的循環。它總是給出一個結果,其中只有最後一行會被更新。

這裏是我嘗試在工作的第一和最後一件事:

$query = "SELECT stud_id FROM tblgrade"; 
    $result = mysql_query($query,$db) or die (mysql_error($db)); 
    while($row = mysql_fetch_array($result)) 
    { 
    $query1 = "UPDATE tblgrade SET stud_grade = '$_POST[grade]' WHERE stud_id = '$_POST[id]'"; 
    mysql_query($query1,$db) or die (mysql_error($db)); 
    } 
    echo "Grades have been updated!"; 

我選擇不發表我試過的循環,因爲它們都是真的搞砸了,我希望是這樣的一個我貼在上面可以做到。

建議,任何人?提前致謝。 :d

PS:在循環真的不好.. :(

回答

1

我會做這樣的:

UPDATE tblgrade 
    SET stud_grade = CASE 
     WHEN stud_id_1_value THEN 'stud_grade_1_value' 
     WHEN stud_id_2_value THEN 'stud_grade_2_value' 
     WHEN stud_id_3_value THEN 'stud_grade_3_value' 
     ... 
    END 
WHERE stud_id IN (stud_id_1_value,stud_id_2_value,stud_id_3_value,...);