Передача массива объектов в php - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь передать массив объектов через ajax в мой файл php. По сути, как только он попадает в мой файл php, я хочу провести l oop через каждый объект в массиве и вставить его свойства в базу данных.

Вот как я настраиваю массив объектов, которые передается:

for(i=1;i<totalRowCount;i++){
    let currentRow = table.rows[i];
    itemArray.push({
        'itemId' : currentRow.cells[0].innerText,
        'memo' : currentRow.cells[1].innerText,
        'project' : currentRow.cells[2].innerText,
        'department' : currentRow.cells[3].innerText,
        'location' : currentRow.cells[4].innerText,
        'qty' : currentRow.cells[5].innerText,
        'price' : currentRow.cells[6].innerText
    })
}

Внутри моего ajax звонка я передаю свои данные. Все значения свойств, которые я передаю, являются просто отдельными значениями, за исключением itemArray, который является моим массивом объектов:

$.ajax({
    type: 'POST',
    url: 'upload.php',
    data:{
        'firstName' : firstName,
        'lastName' : lastName,
        'email' : email,
        'date' : date,
        'vendor' : vendor,
        'txnCurrency' : txnCurrency,
        'expDate' : expDate,
        'vendorDoc' : vendorDoc,
        'justification' : justification,
        'desc' : desc,
        'itemTotals' : itemTotals,
        'subTotals' : subTotals,
        'transTotal' : transTotal,
        'itemArray' : itemArray     
    },  
    success: function(data){
        alert('hi');
    }
});

Моя проблема в том, что я действительно не уверен, какой формат будет иметь itemArray, когда он получит до php. Я пытаюсь l oop, хотя прямо сейчас, но я как-то напутал:

    foreach($itemArray as $x) {
        $sql2 = $mysqli->prepare("INSERT INTO entries (po_id, memo, project_id, department, locn, qty, price) VALUES (?,?,?,?,?,?,?)");
        $sql2->bind_param($last_id,$x['memo'],$x['project'],$x['department'], $x['location'], $x['qty'], $x['price']);
        $conn->query($sql2);
    }

Как бы я отформатировал это, чтобы оно работало? По сути, я хочу сделать отдельную вставку в свою базу данных для каждого объекта в массиве.

1 Ответ

0 голосов
/ 01 апреля 2020

Я предполагаю, что ошибка закончилась форматированием моего оператора SQL. Мне также нужно было JSON. Stringify моего объекта перед отправкой на php, а затем использовать json_decode, как только он туда попал. Вот мой мудрый синтаксис решения:

    foreach($fixedArray as $x) {
        $memo = $x['memo'];
        $project = $x['project'];
        $department = $x['department'];
        $location = $x['location'];
        $qty = $x['qty'];
        $price = $x['price'];

        $sql2 = ("INSERT INTO entries (po_id, memo, project_id, department, locn, qty, price) VALUES ('$last_id', '$memo', '$project', '$department', '$location', '$qty', '$price')");
        $conn->query($sql2);
        $counter = $counter + 1;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...