2016-02-22 3 views
-1

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

for($i=0; $i<sizeof($my_array); $i++) 
     { 

      $sql = "INSERT INTO exclude_resource (id,resource_id,config_id) 
        VALUES(DEFAULT, '$my_array[$i]' ,'$insert_id')"; 

      $command = $connection->createCommand($sql); 
      $result = $command->execute(); 
     } 
+0

Несколько запросов помогут вам. : - http://php.net/manual/en/mysqli.multi-query.php –

+2

улучшить заголовок вопроса, он может привлечь downvoters. – Sandeep

ответ

0

Ваш запрос должен выглядеть примерно так (см mysql docs):

INSERT INTO table (field1, field2, field3) 
VALUES 
    (value1a, value2a, value3a), 
    (value1b, value2b, value3b), 
    (value1c, value2b, value3c), 
    ... 

Так поместить значения в массиве, присоединиться к ним с запятыми, и выполнить полученный запрос. Зарегистрировано в PHP:

$values = array(); 
for($i=0; $i<sizeof($my_array); $i++) { 
    $values[] = "(DEFAULT, '$my_array[$i]' ,'$insert_id')"; 
} 

$sql = 
    "INSERT INTO exclude_resource (id,resource_id,config_id) VALUES '. 
    join(',', $values); 
$command = $connection->createCommand($sql); 
$result = $command->execute(); 

$insert_id это должен иметь значение, но то же самое с фрагмент кода.

Если у вас есть более 5k или 10k строк для вставки, вы должны запустить INSERT между ними и сбросить массив.

Смежные вопросы