@havertz

Как передать массив из input в БД?

Привет. Нужно создать запрос на добавление массива в базу данных, с помощью цикла. Ниже мой неправильный запрос, нужно отредактировать. Я знаю, что этот способ небезопасен, но сначала хотелось бы разобраться с основной проблемой — в базу не приходят данные.

<?php

require_once '../vendor/connect.php';

for ($i = 0; $i < count($names); ++$i) {
    $name = $names[$i];
    $price = $prices[$i];
    $quantity = $quantities[$i];
    mysqli_query($connect, "INSERT INTO `zakaz` (`id`, `name`, `price`, `quantity`) VALUES (NULL, '$names', '$prices, '$quantities')");
    header('Location: /index');
}


?>

Данные приходят из:
<input type="hidden" name="name[]" value="${name}">
    <input class="js-cart-input-quantity" type="hidden" name="quantity[]" value="${quantity}">
    <input class="js-cart-input-price" type="hidden" name="price[]" value="${price * quantity}">


Моя бд:
CREATE TABLE `zakaz` (
    `id` int(11) NOT NULL,
    `names` varchar(255) DEFAULT NULL,
    `prices` varchar(255) DEFAULT NULL,
    `quantities` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


-- Table indexes `zakaz`
--
ALTER TABLE `zakaz`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT  `zakaz`
--
ALTER TABLE `zakaz`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
  • Вопрос задан
  • 162 просмотра
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Для начала вам надо правильно спроектировать базу данных.
Многострочные документы классически делятся на две части - заголовок документа orders (order_id, client_id, state, ...) и табличную часть ordrers_rows (order_id, goods_id, quantity, price). В табличную часть делается одна запись для каждой строки заказа. Таким образом, никакие массивы записывать в таблицу не надо.
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
1) Зачем там цикл, если после первой итерации скрипт завершает работу по редиректу?
2)
$q = "INSERT INTO `zakaz` (`id`, `name`, `price`, `quantity`) VALUES (NULL, '$names', '$prices, '$quantities')";
echo $q; // вставляем руками в пхпмайадмин или из консоли, смотрим все ли на месте или есть ошибки
mysqli_query($connect, $q);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
18 апр. 2024, в 21:56
2000 руб./за проект
18 апр. 2024, в 21:00
150 руб./за проект