$batchSize = 10;
$counter = 0;
$valuesBatch = array();
foreach ($leiLEIRecordobj as $leiLEIRecords)
{
foreach ($leiLEIobj as $leiLEIs)
{} просто для примера что циклов много
foreach ($leiLEIobj as $leiLEIs)
{}просто для примера что циклов много
foreach ($leiLEIobj as $leiLEIs)
{}просто для примера что циклов много
//И вот тут вставляю Ваш код в главном форейч
$fields = "";
$values = "";
foreach ($arResult[$LEI] as $key => $value)
{
if ($key == "lei:LegalAddress" || $key == "lei:HeadquartersAddress" || $key == "lei:OtherAddresses")
{
foreach ($value as $address => $valueAd)
{
$fields .= "`" . $address . "`,";
$values .= "'" . $valueAd . "',";
}
}
else
{
$fields .= "`" . $key . "`,";
$values .= "'" . $value . "',";
}
}
$fields = rtrim ($fields , ",");
//var_dump($fields);
$values = rtrim ($values , ",");
$counter ++;
$valuesBatch[] = "($values)";
var_dump($valuesBatch);
if ($counter==$batchSize)
{
$qwery = strtr(
"INSERT INTO `leis`($fields) VALUES ($values), :text",
array(
':text' => implode(",\r\n", $valuesBatch)
)
);
$sql = mysqli_query($mysqli, $qwery);
// Выполнить запрос или записать его в общую переменную-накопитель
$counter = 0; <-это я так понимаю обнуление счётчика после 10 записей.
$valuesBatch = array();
}
} <---главный цикл Форейч
$fields = "";
$values = "";
foreach ($arResult[$LEI] as $key => $value) {
if ($key == "lei:LegalAddress" || $key == "lei:HeadquartersAddress" || $key == "lei:OtherAddresses") {
foreach ($value as $address => $valueAd) {
$fields .= "`" . $address . "`,";
$values .= "'" . $valueAd . "',";
}
} else {
$fields .= "`" . $key . "`,";
$values .= "'" . $value . "',";
}
}
$fields = rtrim ($fields , ",");
$values = rtrim ($values , ",");
$qwery = "INSERT INTO `leis`($fields) VALUES ($values) ON DUPLICATE KEY UPDATE `Legal-Country` = VALUES(`Legal-Country`), `lei:EntityStatus` = VALUES(`lei:EntityStatus`), `lei:LegalName` = VALUES(`lei:LegalName`), `lei:RegistrationStatus` = VALUES(`lei:RegistrationStatus`), `lei:OtherEntityName` = VALUES(`lei:OtherEntityName`), `lei:ValidationAuthorityID` = VALUES(`lei:ValidationAuthorityID`), `lei:RegistrationAuthorityEntityID` = VALUES(`lei:RegistrationAuthorityEntityID`), `lei:LegalJurisdiction` = VALUES(`lei:LegalJurisdiction`), `lei:OtherLegalForm` = VALUES(`lei:OtherLegalForm`), `lei:EntityStatus` = VALUES(`lei:EntityStatus`), `Legal-FirstAddressLine` = VALUES(`Legal-FirstAddressLine`), `Head-FirstAddressLine` = VALUES(`Head-FirstAddressLine`), `Legal-AdditionalAddressLine` = VALUES(`Legal-AdditionalAddressLine`), `Head-AdditionalAddressLine` = VALUES(`Head-AdditionalAddressLine`), `Legal-PostalCode` = VALUES(`Legal-PostalCode`), `Head-City` = VALUES(`Head-City`), `Legal-City` = VALUES(`Legal-City`), `Head-Region` = VALUES(`Head-Region`), `Legal-Region` = VALUES(`Legal-Region`), `Head-Country` = VALUES(`Head-Country`), `Other-FirstAddressLine` = VALUES(`Other-FirstAddressLine`), `Other-AdditionalAddressLine` = VALUES(`Other-AdditionalAddressLine`), `Other-City` = VALUES(`Other-City`), `Other-Region` = VALUES(`Other-Region`), `Other-Country` = VALUES(`Other-Country`), `Other-PostalCode` = VALUES(`Other-PostalCode`), `lei:InitialRegistrationDate` = VALUES(`lei:InitialRegistrationDate`), `lei:LastUpdateDate` = VALUES(`lei:LastUpdateDate`), `lei:EntityStatus` = VALUES(`lei:EntityStatus`), `lei:NextRenewalDate` = VALUES(`lei:NextRenewalDate`), `lei:ManagingLOU` = VALUES(`lei:ManagingLOU`), `lei:ValidationSources` = VALUES(`lei:ValidationSources`)";
$sql = mysqli_query($mysqli, $qwery);
$valuesA[] = addValueQuotes($key)/*"'{$value}'"*/; вот тут видимо при копировании вставился $key поправил его на $value и значения подставились как нужно. Можно ещё совет насчёт моего супер пупер ON DUPLICATE KEY UPDATE (на 30 строчек) что с ним можно придумать? Может его как то присоединить к основному ИНСЕРТ? Задача у меня такая. Один раз залить, а потом (ежедневно) обновлять поля по главному полю. Т.е. либо обновлять поля либо создавать новую строчку.
Я ещё не тестил на большой базе, но вот сейчас сервак подкрутят и попробую залиться. Проверим пакетную вставку поможет ли)))