当通过下拉列表更新 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();
}
?>
我尝试制作一个包含下拉菜单的网页。
选中下拉列表后,我想根据枚举将标记更新到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();
}
?>