我在这个问题中阅读了类似的答案:How to insert into MYSQL row from multiple $_POST arrays和How to insert into MYSQL row from multiple $_POST arrays但问题是这些答案在我的代码中不起作用。是因为即时通讯使用ajax?我只得到第一个数组的值。
如果我也将变量声明放在for循环中,它也不起作用。
这是我的ajax:
var name = [];
$('input[name="name[]"]').map(function(){ name.push($(this).val()); }); var studid = [];
$('input[name="studid[]"]').map(function(){ studid.push($(this).val()); }); var nameStr = name != '' ? '&name='+ name : '';
var studStr = studid != '' ? '&studid='+ studid : '';
var dataString = 'subject='+ subject + '§ion=' + section + studStr + nameStr;
$.ajax({ type: "POST", url: 'save.php', data: dataString, dataType: "html",
success: function(data) {
$('input#subject-field').val('');
$('input#section-field').val('');
$('input.record-input-forms').val('');
$('#status-message').css({"color":"#39b1c6"});
$('#status-message').html('Save successfully',function(){
$('#status-message').fadeOut(2000); }); },
error:function (xhr, ajaxOptions, thrownError){
alert(thrownError); } });
return false;
});
这是我的php:
if(isset($_POST['studid']) || isset($_POST['name'])){
$studid = array_map(mysql_real_escape_string, explode(",",$_POST['studid']));
$name = array_map(mysql_real_escape_string, explode(",",$_POST['name']));
for ($i=0; $i<count($studid); $i++){
$sql_1 = "INSERT INTO tbl_student(StudentID, StudentName, SubjectID) VALUES ('".$studid[$i]."', '".$name[$i]."', LAST_INSERT_ID())";
mysqli_query($con,$sql_1);
}
}
答案 0 :(得分:1)
使用mysql_insert_id(); 而不是LAST_INSERT_ID()
答案 1 :(得分:0)
你没有正确地从jQuery发送数据,它似乎是你把数组和字符串混合在一起。
这是一个从jQuery发布studid-array的简单请求
var saveData = $.ajax({
type: 'POST',
data: {studid: studid},
url: 'save.php',
dataType: 'html'
});
saveData.done(function(data) {
$('input#subject-field').val('');
$('input#section-field').val('');
$('input.record-input-forms').val('');
$('#status-message').css({"color":"#39b1c6"});
$('#status-message').html('Save successfully',function(){
$('#status-message').fadeOut(2000); });
});
saveData.fail(function(ts) {
alert(ts.responseText);
});
调用save.php时,将设置$_POST['studid']
(如果数组中有任何内容)
如果您这样做:
var saveData = $.ajax({
type: 'POST',
url: 'save.php?studid=' + studid,
dataType: 'html'
});
调用save.php时,将设置$_GET['studid']
(如果数组中有任何内容)。最好的方法是在ajax函数调用中使用data-option(在我的第一种情况下)。如果您选择使用此选项,则必须先将stuid-array序列化,然后再将其作为url的一部分放入。
<强>更新强> 如果要传递多个数组,则必须执行以下操作:
var saveData = $.ajax({
type: 'POST',
data: {studid: studid, name_arr2: data_arr2},
url: 'save.php',
dataType: 'html'
});