一次更新多个成绩

时间:2017-04-08 08:19:20

标签: php mysql mysqli

我想更改教师名单中每个学生的成绩。 我不知道这里有什么问题。 请你帮帮我。 这是sub-doc.php的代码

这是savesub_doc.php

 <?php
        if(isset($_POST["submit"])) {

       foreach($_POST['sh_grade'] as $gr){

           $i =$_POST['sh_id'];
           $sqiil="UPDATE grade SET sh_grade[]='$gr' WHERE sh_id='$i' ";

                  if(mysqli_query($conn,$sqiil)){
                              }                                   

            }}
 ?>

sub_doc.php

 <input type="hidden" name="sh_id[]" value="<?php echo $row["sh_id"]; ?>" >            

 <input type="text" name="sh_grade[]" value='<?php echo $row['sh_grade'];?>">
 <input type="submit"  value="Submit" name="submit"> 

2 个答案:

答案 0 :(得分:0)

<?php
  if(isset($_POST["submit"])) {
   foreach($_POST["sh_grade"] as $keys => $gr){
     $i = $_POST["sh_id"][$keys];
     $sqiil="UPDATE grade SET sh_grade = " . $_POST["sh_grade"][$keys] . "WHERE sh_id = " . $i;
     if(mysqli_query($conn,$sqiil)){                              }                                   

     }}
?>

试试这个并告诉我你是否有问题!!

答案 1 :(得分:0)

您应该使用参数化查询来阻止SQL注入。我怀疑表格列的名称中有[]

您还需要索引$_POST['sh_id']以获取每个成绩的相应ID。

if (isset($_POST['submit'])) {
    $stmt = mysqli_prepare($conn, "UPDATE grade SET sh_grade = ? WHERE sh_id = ?");
    mysqli_stmt_bind_param($stmt, "si", $gr, $id);
    foreach ($_POST['sh_grade'] as $i => $gr) {
        $id = $_POST['sh_id'][$i];
        mysqli_stmt_execute($stmt);
    }
}