Передать данные из js в базу данных
Мне необходимо передать массив js в базу данных. Для этого мне нужно ( я совсем не знаю как ) сделать запрос и так же цикл для добавления этого массива. Я знаю что здесь нет pdo и т.п., пока оно не нужно, т.к. я просто изучаю всё это дело, и проблема состоит в другом.
var xhr = new XMLHttpRequest();
xhr.open('POST', '/js/func');
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send(JSON.stringify(cart));
xhr.onreadystatechange = function()
{
if (this.readyState == 4)
{
if (this.status == 200)
{
console.log(xhr.responseText);
}
else
{
console.log('ajax error');
}
}
};
И вот мой php.
<?php
require_once '../vendor/connect.php';
print_r($_POST);
?>
Благодаря этому коду, я могу увидеть в консольке следующее:
Array
(
[{"6":{"name":"One","price":"385","src":"uploads/one_png","quantity":1,"id":"6"},"8":{"name":"Second","price":"435","src":"uploads/second_png","quantity":1,"id":"8"}}] =>
)
Ответы (1 шт):
Автор решения: pgood
→ Ссылка
Тут подправил Content-type и вместо cart вставил данные из вашего примера
var xhr = new XMLHttpRequest();
xhr.open('POST', '');
xhr.setRequestHeader("Content-type", "application/json");
xhr.send(JSON.stringify([{"6":{"name":"One","price":"385","src":"uploads/one_png","quantity":1,"id":"6"},"8":{"name":"Second","price":"435","src":"uploads/second_png","quantity":1,"id":"8"}}]));
xhr.onreadystatechange = function () {
if (this.readyState == 4) {
if (this.status == 200) {
console.log(xhr.responseText);
}
else {
console.log('ajax error');
}
}
};
Вот пример добавления данных в БД MySql, также есть ньюанс в обработке полученных данных в формате JSON
if($_SERVER['REQUEST_METHOD'] === 'POST'
&& ($strJson = file_get_contents('php://input'))
&& ($arRequest = json_decode($strJson,true))
){
$mysqli = new mysqli('host','username','password','database_name');
$query = "INSERT INTO `имя_таблицы_в_БД` (`name`, `price`, `src`, `quantity`, `id`) VALUES(?, ?, ?, ?, ?)";
$statement = $mysqli->prepare($query);
$statement->bind_param('sssii', $name, $price, $src, $quantity, $id);
foreach($arRequest[0] as $arItem){
$name = $arItem['name'];
$price = $arItem['price'];
$src = $arItem['src'];
$quantity = $arItem['quantity'];
$id = $arItem['id'];
if(!$statement->execute()){
throw new \Exception('Error : ('. $mysqli->errno .') '. $mysqli->error);
}
}
$statement->close();
}