我有一個頁面,可以從數據庫動態生成很多行的學生(最多大約50個)。該頁面允許教師一次爲每個學生輸入成績。該行使用AJAX/jQuery的產生,看起來是這樣的:如何通過AJAX發送大量數據以便用PHP插入到MySQL數據庫中
$("#tbodystudents").append('<tr><td class="studentid" style="display:none">'+value[0]+'</td><td class="subjectid" style="display:none">'+value[1]+'</td><td><input class="inpmark" type="number"></td>/tr>');
我然後將其發送到我的PHP文件是這樣的:
$("#btnaddmarks").click(function(){
var marks= $("input.inpmark").map(function(){
return $(this).val();
}).get().map();
var studentids= $(".studentid").map(function() {
return $(this).text();
}).get().map();
var subjectids= $(".subjectid").map(function() {
return $(this).text();
}).get().join();
$.ajax({
type: "POST",
url: "modules/addmarks.php",
dataType: 'json',
data: {s:studentids,m:marks,subj:subjectids},
cache: false,
}) // etc..
});
和我的PHP,addmarks.php:
<?php
$inputvalues = $_POST;
$errors = false;
$returnResult;
$result = false;
include_once '../../../includes/database.php';
$studentids = $inputvalues['s'];
$marks = $inputvalues['m'];
$subjectids= $inputvalues['subj'];
$studentid = explode(",",$studentids);
$mark= explode(",",$marks);
$subjectid= explode(",",$subjectids);
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
if(!$errors) {
$sql = "INSERT INTO `marks` (`studentid`, `subjectid`,`mark`) VALUES (?,?,?)";
$stmts = $mysqli->prepare($sql);
$stmts->bind_param('iii',$studentid,$subjectid,$mark);
$result = $stmts->execute();
$returnResult = "Success";
}
mysqli_close($mysqli);
echo json_encode(['result' => $returnResult, 'errors' => $errors]);
exit;
?>
所以我的問題是,
1)我怎麼能循環的值和插入相應的值到我的數據庫?
2)這是解決此問題的最佳方法嗎?如果不是,那是什麼?
3)如何確保輸入正確的值,意味着studentids數組中的第一個值和marks數組中的第一個值被連接並相應地輸入到數據塊中。
4)使用AJAX將數據發送到後端安全嗎?我打算以後使用HTTPS。
感謝您的幫助。
關於輸入字段的數據集思想非常棒!我對編程非常陌生,所以這是一個我正在學習的項目:)我可能沒有正確解釋,但是我點擊了一個按鈕發送所有數據,因此每個學生及其標記都不會單獨輸入到DB中。關於4,我打算設置一個小型服務器,以便我可以學習服務器管理員。這不是供公衆使用的,但我仍然想學習如何正確執行:) – Bruno
發送所有數據(您不需要AJAX,只需提交表單)的問題,如果網絡出現故障或服務器,所有輸入的數據可能會丟失。因此,通過發送小片段數據,應用程序在數據完整性方面變得更加安全(並且減少了用戶的沮喪)。 – Paul