在PHP&中使用循环的多个更新查询MySQL的

时间:2014-03-29 15:28:07

标签: php mysql sql loops sql-update

我有一张桌子,其中我存储了在课堂上注册的学生名单,以及他们各自的成绩。它具有 STUD_ID STUD_GRADE 作为列,并且STUD_GRADE的默认值为NA。

我想要做的是显示表格中的所有学生,以及旁边的成绩的文本框,当按下提交按钮时,所有行都将被更新。

我使用以下代码显示所有内容:

    $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 个答案:

答案 0 :(得分: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,...);