使用数组使用jQuery,PHP和MySQL插入多行

时间:2019-04-10 13:26:05

标签: php jquery mysql

我知道这已经被问了一百万遍了,但是我似乎无法正确解决。我正在尝试使用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个唯一的多行?

1 个答案:

答案 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,然后在循环中每次重复时将其递增