Запись массива php в базу данных

203
23 декабря 2017, 06:35

Доброго времени суток. Имеется массив переданный на страницу как $_POST['ch'], в котором храниться неизвестное количество чисел (id checkbox'ов). Есть таблица base, с столбиками id name prod price. И есть еще отдельная таблица ord с столбиками id name prices sum. Как сделать так, что-бы все числа, которые в массиве были id от таблицы base и в таблицу ord записывались значения:
id - авто;
name - здесь будут через запятую все числа с массива $_POST['ch']
prices - здесь через запятую все значения колонки price таблицы base (все числа с массива $_POST['ch'] - это id таблицы base) sum - сумма всех чисел с колонки prices (выше).

Answer 1

Только не база данных base и ord, а, видимо, таблицы base и ord в БД. Если предположить, что БД у нас MySQL, то код будет таким:

$join = join($_POST['ch'], ', '); //склеиваем массив в строку
$q="INSERT INTO `ord` (`name`,`prices`,`sum`) SELECT '$join' AS `name`, GROUP_CONCAT(`price` SEPARATOR ', ') AS `prices`, SUM(`price`) AS `sum` FROM `ord` WHERE `id` IN ($join)"; //создаём запрос
/*
далее надо выполнить в БД наш запрос $q,
например, функцией mysqli_query()
*/

Важно! Предполагается, что массив $_POST['ch'] является "чистым", т.е. автор уверен, что в нём именно числа, а не что-то ещё. В противном случае надо предварительно проверить массив, иначе есть риск SQL-инъекции

Answer 2

Хранить что-то через запятую плохая практика, лучше создайте ещё одну таблицу, где будет построчно хранится $_POST['ch'] и id записи к которой каждый элемент принадлежит.

Answer 3

Заведите третью таблицу

CREATE TABLE it_to_name(
    id INT,
    name INT,
    price INT
)

Сделайте id внешним ключом к id из таблицы ordи храните в ней необходимые данные таким образом

  id  |  name  | price
------+--------+-------
   1  |   2    | 10000
   1  |  15    |  5000
   1  |  23    |  6350
   2  |  17    | 15000
   2  |  18    |   460
READ ALSO
В opencart 2 прибавить процент к цене

В opencart 2 прибавить процент к цене

Как вывести в шаблоне несколько цен, прибавлением процента

188
Аналог рации в браузере [требует правки]

Аналог рации в браузере [требует правки]

Добрый деньЕсть небольшая идея

190
Как переделать PHP код в Laravel код

Как переделать PHP код в Laravel код

Как текущий код Нативного PHP переделать под синтаксис Laravel ORM?

201
Использование Telegram Api PHP

Использование Telegram Api PHP

Подскажите как использовать Telegram Api на PHPКак вызывать функции? Очень много примеров использования telegram api для бота, а как использовать обычное...

1261