- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/db/connection.php
- Класс: BitrixMainDBConnection
- Вызов: Connection::addMulti
public function addMulti($tableName, $rows, $identity = "ID")
{
$uniqueColumns = [];
$inserts = [];
// prepare data
foreach ($rows as $data)
{
$insert = $this->getSqlHelper()->prepareInsert($tableName, $data, true);
$inserts[] = $insert;
// and get unique column names
foreach ($insert[0] as $column)
{
$uniqueColumns[$column] = true;
}
}
// prepare sql
$sqlValues = [];
foreach ($inserts as $insert)
{
$columns = array_flip($insert[0]);
$values = $insert[1];
$finalValues = [];
foreach (array_keys($uniqueColumns) as $column)
{
if (array_key_exists($column, $columns))
{
// set real value
$finalValues[] = $values[$columns[$column]];
}
else
{
// set default
$finalValues[] = 'DEFAULT';
}
}
$sqlValues[] = '('.join(', ', $finalValues).')';
}
$sql = "INSERT INTO {$this->getSqlHelper()->quote($tableName)} (".join(', ', array_keys($uniqueColumns)).") ".
"VALUES ".join(', ', $sqlValues);
$this->queryExecute($sql);
return $this->getInsertedId();
}