Encoderast
@Encoderast
frontend пытается что-то делать в backend

Как добавить в БД >> массивы (array) / группа чекбоксов PDO?

Всем привет!

Есть чекбокс:

<label><input name="delivery[]" value="1" type="checkbox">one</label>
<label><input name="delivery[]" value="2" type="checkbox">two</label>
<label><input name="delivery[]" value="3" type="checkbox">three</label>


Как добавить такой массив в БД используя функцию:

public static function createProduct($options)
    {
// Соединение с БД
$db = Db::getConnection();
 
// Текст запроса к БД
$sql = 'INSERT INTO product '
          . '(delivery)'
          . 'VALUES '
          . '(:delivery)';
 
// Получение и возврат результатов. Используется подготовленный запрос
   $result = $db->prepare($sql);
 
   $result->bindValue(':delivery', $options['delivery'], PDO::PARAM_INT);
   // foreach - не знаю как его написать
 
 
   if ($result->execute()) {
         // Если запрос выполенен успешно, возвращаем id добавленной записи
          return $db->lastInsertId();
      }
      // Иначе возвращаем 0
      return 0;
}


в БД записывается в ячейку delivery в виде: 1, 2, 3 на каждый товар

51bfaf71c0804c1899d27fefc8d0e8f8.PNG

Подскажите люди знающие как это сделать
  • Вопрос задан
  • 814 просмотров
Решения вопроса 1
@D3lphi
$result->bindValue(':delivery', serialize($options['delivery']), PDO::PARAM_STR); // Сериализовать массив.
// Или
$result->bindValue(':delivery', json_encode($options['delivery']), PDO::PARAM_STR); // Преобразовать в json - формат.
// Или
$result->bindValue(':delivery', implode(',' ,$options['delivery']), PDO::PARAM_STR); // Соединить элементы массива в строку с запятой в качестве разделителя.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы