Задать вопрос
SimBioT19
@SimBioT19
{{ user.about }}

Как принять $_POST массив?

Отправляю вот таким нехитрым способом данные в php-файл:
$.ajax({
      type: "POST",
      url: "insert.php",
      data: "Value="+Value,
      cache: false,
      success: function() {    
            alert("Успешно!");
      }
    });

Но дело в том, что Value — это массив, как минимум из 3-х чисел, т.е. var value = [1, 2, 3];

Мне требуется следующее — принять их и занести в БД, но проблема в том, что PHP не принимает $_POST['Value'] как строку 1, 2, 3; а лишь берёт первое значение 1.
Вопрос:
Как мне подставить отправленные числа в массив $value[..], а также как я потом смогу занести их в таблицу, если мне требуется что-то вроде этого:
"UPDATE table SET `status`='1' WHERE `id`=' все значения $value ' "
  • Вопрос задан
  • 1129 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
MrBoriska
@MrBoriska
Пэхэпист самоучка, Питоност по Лутцу. C++
Jq умеет сам формировать представление аргументов запроса. Передавайте их как обычный обьект(или просто массив). Сформировать строку из массива можно используя метод массивов .join()
$.ajax({
      type: "POST",
      url: "insert.php",
      data: {Value: Value.join(", ")},
      cache: false,
      success: function() {    
            alert("Успешно!");
      }
});


UPD:
Для составления запроса как у вас предпочтительно использовать оператор IN
"UPDATE table SET `status`='1' WHERE `id` IN  ($value)"


Но нужно учитывать, что такая подстановка аргументов чревата sql иньекцией. Есть маленькие библиотеки обеспечиващие защиту по такому принципу. Например, от автора статьи и от меня.

Ваш запрос будет выглядеть примерно так(тут $value это массив, а не строка):
$db->getRow('UPDATE table SET `status`=1 WHERE `id` IN  (?a)', array($value));
Ответ написан
PiCoderman
@PiCoderman
Формируйте строку для отправки : из массива [1, 2, 3, 4, 5] в строку "1:2:3:4:5". А на сервере уже разбивайте на переменные или в массив пихайте.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Попробуйте массив преобразовать в json,и отправить данные на сервер как строку, далее на сервере, распарсить эту строку, и на выходе получите массив
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы