当通过下拉列表更新 mysql 中的 table 时,所有行也会更新

when update the table in mysql through dropdown, all the row also updated

我尝试制作一个包含下拉菜单的网页。

选中下拉列表后,我想根据枚举将标记更新到MySQL数据库中,但是代码不起作用。

我使用 javascript 和 PHP 来查询 MySQL。

<form  id="myForm" method="post" onsubmit="return submitform()">
    <select id="lvl" name="lvl" style="height:30px;">    
            
        <option value="std1"selected="selected">
            <?php echo $stu1name["Stu_name"] ?>
        </option>
        <option value="std2" >  
            <?php echo $stu2name["Stu_name"] ?>
        </option>
        <option value="std3" >
            <?php echo $stu3name["Stu_name"] ?>
        </option>
        <option value="std4" >
            <?php  echo $stu4name["Stu_name"] ?>
        </option>
        <option value="std5" >
            <?php  echo $stu5name["Stu_name"] ?>
        </option>
                                        
    </select>
    <p><input type="submit" name="submit" value="Submit"></p>
</form>

这是我的 javascript 和 PHP:

function submitform() {
    var option= document.getElementById('lvl').value;
    if (option == "std1"){
        ?php
            mysqli_query($conn, 
                "UPDATE evaluation set mid_mark='" . $_POST["mid_mark"] . 
                "',end_mark='" . $_POST["end_mark"] . 
                "', performance='" . $_POST["performance"] . 
                "' WHERE Enum ='1'"
            ); 
        ?>
        return true;
    }
    if (option == "std2"){
        <?php
            mysqli_query($conn, 
                "UPDATE evaluation set mid_mark='" . $_POST["mid_mark"] . 
                "',end_mark='" . $_POST["end_mark"] . 
                "', performance='" . $_POST["performance"] . 
                "' WHERE Enum ='2'"
            ); 
        ?>
        return true;
    }   
    if (option == "std3"){
        <?php
            mysqli_query($conn, 
                "UPDATE evaluation set mid_mark='" . $_POST["mid_mark"] . 
                "',end_mark='" . $_POST["end_mark"] . 
                "', performance='" . $_POST["performance"] . 
                "' WHERE Enum ='3'"
            ); 
        ?>
        return true;
    }   
    if (option == "std4"){
        <?php
            mysqli_query($conn, 
                "UPDATE evaluation set mid_mark='" . $_POST["mid_mark"] . 
                "',end_mark='" . $_POST["end_mark"] . 
                "', performance='" . $_POST["performance"] . 
                "' WHERE Enum ='4'"
            ); 
        ?>
        return true;
    }
    if (option == "std5"){
        <?php
            mysqli_query($conn, 
                "UPDATE evaluation set mid_mark='" . $_POST["mid_mark"] . 
                "',end_mark='" . $_POST["end_mark"] . 
                "', performance='" . $_POST["performance"] . 
                "' WHERE Enum ='5'"
            ); 
        ?>
        return true;
    }       
}

但是当我更新时,所有行都像这样更新 image

我不知道我哪里做错了。我完全迷失在这里。

这是因为服务器中的 php 运行 和所有代码 运行 在您的页面加载之前,所以您无法通过浏览器中的脚本控制它 javascript。您可以在没有 javascript 的情况下将数据插入旅游数据库,并将此 php 代码放在页面顶部。您必须删除表单中的 onsubmit 语句。

<?php
if (isset($_POST['lvl'])) {
$enum = substr($_POST['lvl'], -1, 1); 
$sql = "UPDATE evaluation SET mid_mark=:mid_mark, end_mark=:end_mark, performance=:performance WHERE Enum='$enum'";
$stmt = $pdo->prepare($sql);                                  
$stmt->bindParam(':mid_mark', $_POST['mid_mark'], PDO::PARAM_STR);       
$stmt->bindParam(':end_mark', $_POST['end_mark'], PDO::PARAM_STR);    
$stmt->bindParam(':performance', $_POST['performance'], PDO::PARAM_STR);  
$stmt->execute(); 

}      
?>