mrusklon
@mrusklon
Не получается? Яростно гугли!

Как подготовить данные и сделать INSERT в БД из данных дат?

Есть у меня на jquery календарик , я в нем выбираю диапазон дат, примерно вот в таком виде
06.04.2019)(07.04.2019)(13.04.2019)(14.04.2019
почему примерно, я еще не определился как конкретно надо сформировать разделители.
А мне надо в БД добавить в таблицу данные в таком виде

(NULL, '2019-04-09', '0')
NULL - подставляется всегда и всегда
0 - берется из инпута

как сформировать правильный запрос INSERT в бд чтоб все выбранные даты записать?
Готовый запрос в моем виде должен вот так выглядеть
INSERT INTO `dayoff` (`id`, `off_date`, `off_id`) VALUES (NULL, '06.04.2019', '0'),(NULL, '07.04.2019', '0'),(NULL, '13.04.2019', '0'),(NULL, '14.04.2019', '0')
  • Вопрос задан
  • 62 просмотра
Пригласить эксперта
Ответы на вопрос 2
irishmann
@irishmann
Научись пользоваться дебаггером
1) получить даты в php
2) разбить в массив (ф-ция explode())
3) перебирая этот массив сформировать запрос.

И не допустить SQL-injection

UPD.
пример
<?php
//есстественно все экранируем, фильтруем и т.д. чтоб SQL-injection не было
$dates ='06.04.2019)(07.04.2019)(13.04.2019)(14.04.2019';// $_POST['dates'] пришло из календаря
$off_id = 55;//$_POST['off_id'] пришло из input 


$dates = explode(')(', $dates);
/*
 * получили массив $dates
 * 0 => 06.04.2019
 * 1 => 07.04.2019
 * 2 => 13.04.2019
 * 3 => 14.04.2019
 */
$sql = 'INSERT INTO `dayoff` (`id`, `off_date`, `off_id`) VALUES ';
$values = [];
//перебираем формируя запрос
foreach($dates as $key => $date){
    $values[] = "(NULL, {$date}, {$off_id})";
}
//массив в строку
$values = implode(', ',$values); 

//Формируем окончательный запрос
$sql .= $values;
echo $sql;

Ответ написан
AleksandrB
@AleksandrB
Совсем недавно вывел "Hello world"
$array = $_POST;
Правильный способ
foreach ($array as $item) {
            $this->db->query('INSERT INTO `dayoff` (`id`, `off_date`, `off_id`) VALUES (NULL, :date, :zero)', ['date'=>$item['date'], 'zero'=>$item['zero']]);
        }

Неправильный способ, но работать будет - вставить в строку по виду
foreach ($array as $item) {
'INSERT INTO `dayoff` (`id`, `off_date`, `off_id`) VALUES (NULL, '.$item['date'].', '.$item['zero'].')'
}
Ответ написан
Ваш ответ на вопрос

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

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