WaRstim
@WaRstim

Как организововать мультизапрос массива данных?

День Добрый ! Столкнулся с задачкой: Как организовать мультизапрос на добавление строк в таблицу в зависимости от кол-во полученных данных (на автомате). есть код
if (isset($_POST['data_oper_tas'])) { $data_oper_tas = $_POST['data_oper_tas']; if ($data_oper_tas == '') { unset($data_oper_tas);}}
	if (isset($_POST['check_func'])){
		$formatos_check=implode(',',$_POST['check_func']);
	}
array (size=2)
  'data_oper_tas' => string '2015-09-14' (length=10)
  'check_func' => 
    array (size=5)
      0 => string '16' (length=2)
      1 => string '7' (length=1)
      2 => string '8' (length=1)
      3 => string '10' (length=2)
      4 => string '11' (length=2)
$sql="INSERT INTO dateplan VALUES ('$formatos_check','$data_oper_tas') ";

необходимо типа такого
$sql="INSERT INTO dateplan 
VALUES ('16','2015-09-14'), ('16','2015-09-14'),
('7','2015-09-14'), ('8','2015-09-14') ,
('10','2015-09-14'),('11','2015-09-14')  ";

Всем Огромное Спасибо !
  • Вопрос задан
  • 504 просмотра
Решения вопроса 2
@heartdevil
плыву как воздушный шарик
Привет.

Запрос должен быть вида
INSERT INTO dateplan
  (id_tas_dat, date_dat)
VALUES
(16, '2015-09-14'),
(7, '2015-09-14'),
(8, '2015-09-14'),
(10, '2015-09-14'),
(11, '2015-09-14')

Чтобы его сформировать:
Читаете из массива array['data_oper_tas'] дату, далее читаете в цикле array['check_func'][0], array['check_func'][1] и так далее айдишники и формируете мультинсерт запрос.

UPD:

Вот примерный алгоритм (это нерабочий код). Вам нужно будет его подправить и сделать проверки в входные параметры.

$inserts = '';
$date = $_POST['data_oper_tas'];

for ($i = 0, $i < count($_POST['check_func']); $i++)
{
	$inserts .= '('. $_POST['check_func'][$i] .','. $date .'),';
}

$insertQuery = 'INSERT INTO dateplan (id_tas_dat, date_dat) VALUES ';

$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
$stmt = $mysqli->prepare($insertQuery . rtrim($inserts, ','));
$stmt->execute();
$stmt->close();
Ответ написан
WaRstim
@WaRstim Автор вопроса
Решение
if (isset($_GET['data'])) { $data = $_GET['data']; if ($data == '') { unset($data);}}
if (isset($_POST['data_oper_tas'])) { $data_oper_tas = $_POST['data_oper_tas']; if ($data_oper_tas == '') { unset($data_oper_tas);}}
if (isset($_POST['check_func'])){
$arr_id=$_POST['check_func'];
for ($i = 0; $i < count($arr_id); $i++) {
$result="INSERT INTO `dateplan`(id_tas_dat,date_dat) VALUES ('$arr_id[$i]','$data_oper_tas');";
mysql_query($result);
}
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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