我知道这已经被问了一百万遍了,但是我似乎无法正确解决。我正在尝试使用jQuery发送的数据同时插入多行。
我正在使用AJAX / jQuery发送这样的值:
jQuery / AJAX
var extrasids = $('.classextrasid').map(function() {return $(this).val()}).toArray();
var extrasrates = $('.classextrasid').map(function() {return $(this).data('rates')}).toArray();
var extrasquantities = $('.classextrasid').map(function() {return $(this).data('quantity')}).toArray();
$.ajax({
type: "POST",
url: "modules/addsinglebooking.php",
dataType: 'json',
data: {extrasids:extrasids,extrasrates:extrasrates,extrasquantities:extrasquantities},
cache: false,
})
我的PHP看起来像这样:
PHP
<?php
session_start();
$inputvalues = $_POST;
$errors = false;
$returnResult;
$result = false;
include_once '../../includes/database.php';
$extraids = $inputvalues['extrasids'];
$extrarates = $inputvalues['extrasrates'];
$extraquantities = $inputvalues['extrasquantities'];
if( !$errors ) {
foreach($extraids as $extraid){
$stmt = $mysqli->prepare("INSERT INTO `extras`(`extraid`,`extrarate`,`extraquantity`) values (?,?,?)");
$stmt->bind_param('sss', $extraid,$extrarates,$extraquantities);
if(!$stmt->execute()) echo $stmt->error;
}
$result = $stmt->get_result();
$returnResult = "Success";
}
mysqli_close($mysqli);
echo json_encode(['result' => $returnResult, 'errors' => $errors]);
exit;
?>
我的问题:
如果我的值看起来像这样,我上面的代码将起作用:
extraid extrarates extraquantity
---------------------------------------
1 rate1 quantity1
2 rate1 quantity1
3 rate1 quantity1
但是所有值都是这样的:
extraid extrarates extraquantity
---------------------------------------
1 rate1 quantity1
2 rate2 quantity2
3 rate3 quantity3
因此,如果其余值相同且只有一个值不同,则我仅循环遍历一个数组并添加多个记录。
如何遍历所有内容以添加3个唯一的多行?
答案 0 :(得分:-1)
在您的foreach
中,您可以添加以下内容:
$i = 0;
foreach($extraids as $extraid){
$stmt = $mysqli->prepare("INSERT INTO `extras`(`extraid`,`extrarate`,`extraquantity`) values (?,?,?)");
$stmt->bind_param('sss', $extraid,$extrarates[$i++],$extraquantities[$i++]);
if(!$stmt->execute()) echo $stmt->error;
}
因此,首先将$i
设置为0,然后在循环中每次重复时将其递增