[英]How to update table column using array and for loop in php and mysql?
for ($key=0; $key < count($_POST['marks']); $key++) {
$from_marks = $_POST['from'][$key];
$get_marks = $_POST['marks'][$key];
//echo $from_marks." ";
if($get_marks > $from_marks){
// header("location: ../../pages/marks.php?over=err");
// break;
echo "Cant add more marks <br/>";
}
else{
echo $get_marks."<br/>";
$update_marks_query = $db->prepare(
"UPDATE sc_marks SET get_marks='"
.$get_marks
."' WHERE _sid='$sc_foreign_id' AND exam_type='$select_exam_type' ");
$update_marks_query -> execute();
}
}
The issue is occurred when I execute the code, I got the last fetched value in each rows of the table. 当我执行代码时出现问题,我在表的每一行中获得了最后一个获取的值。
Data result after update: 更新后的数据结果:
<?php
include "./connection/config.php";
if(isset($_POST['btn_update_marks'])){
$sc_foreign_id = $_POST['sc_foreign_id'];
$select_exam_type = $_POST['select_exam_type'];
for($key=0; $key<count($_POST['marks']); $key++){
$from_marks = $_POST['from'][$key];
$get_marks = $_POST['marks'][$key];
echo $from_marks." ";
if($get_marks > $from_marks){
// header("location: ../../pages/marks.php?over=err");
// break;
echo "Marks Vadhu Chhe <br/>";
}
else{
echo $get_marks."<br/>";
$update_marks_query = $db->query("UPDATE sc_marks SET get_marks='".$get_marks."' WHERE _sid='$sc_foreign_id' AND exam_type='$select_exam_type' ");
}
// else{
// $update_marks_query = $db->prepare("UPDATE sc_marks SET get_marks='$get_marks' WHERE _sid='$sc_foreign_id' ");
// $update_done = $update_marks_query -> execute();
// }
}
// if($update_done){
// echo "Successfully Updated";
// header("location: ../../pages/marks.php?add-marks=yes");
// }
// else{
// echo "Error";
// header("location: ../../pages/marks.php?add-marks=error");
// }
}
?>
I would suggest you to prepare your update statement before the for loop 我建议你在for循环之前准备你的更新语句
$query = $db->prepare("UPDATE sc_marks SET get_marks=? WHERE _sid=? AND exam_type=?");
for ($key=0; $key < count($_POST['marks']); $key++) {
$from_marks = $_POST['from'][$key]; //add some validation here
$get_marks = $_POST['marks'][$key]; //e.G with regex
//echo $from_marks." ";
if($get_marks > $from_marks){
// header("location: ../../pages/marks.php?over=err");
// break;
echo "Cant add more marks <br/>";
}
else{
echo $get_marks."<br/>";
$query->execute($get_marks, $sc_foreign_id, $select_exam_type);
}
}
//Then attach the parameters during each iteration within the loop
Your current approach is a security risk, apart from being less efficient than it could be. 您目前的方法存在安全风险,除了效率低于预期。 Read about SQL injection. 阅读SQL注入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.