Предположим есть запрос
INSERT INTO writer_disciplines_temp(wrd_id,wrt_id)
SELECT min(id) as wrd_id, wrt_id
FROM `writer_disciplines`
WHERE wrt_id = 191000
GROUP BY discipline_id;
INSERT INTO writer_disciplines_temp(wrd_id,wrt_id)
SELECT min(id) as wrd_id, wrt_id
FROM `writer_disciplines`
WHERE wrt_id = 191000
GROUP BY discipline_id;
Только INSERT-ов на самом деле, допусти 1000.
Для выполнения используется метод
public function multiQuery($query_text)
{
$return = [];
$query = mysqli_multi_query($this->getConnection(), $query_text);
if ($query) {
do {
if ($result = mysqli_store_result($this->getConnection())) {
while ($row = mysqli_fetch_row($result)) {
$return[] = $row;
}
mysqli_free_result($result);
}
} while (mysqli_more_results($this->getConnection()) && mysqli_next_result($this->getConnection()));
}
if (mysqli_error($this->getConnection())) {
die(mysqli_error($this->getConnection()));
}
return $return;
}
После INSERT-a сразу выполняется другая операция с нашей таблицей.
Нужно чтобы след команды выполнялись после всех insertoв в multiQuery($sql).($sql указан выше).
Решение найти не смог в рамках использования такого запроса и mysqli_multi_query. Изменил процесс работы, всё ок. Но, думаю, полезно будет разобраться.
Я думаю, что проблема в $this->getConnection(). Если каждый раз открывается новое соединение, то вся последующая обработка не работает. Соответственно, результаты работы всех инсертов мы не получаем. И в результате последующие команды исполняются до того как все запросы на вставку успеют завершиться
В любом случае следует понимать, что mysqli_multi_query - это очень сложный инструмент, с которым надо уметь обращаться. И без нужды не применять. Так что текущее измененное решение без mysqli_multi_query это самый оптимальный вариант.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Я делаю чат на сайте, и для этого у меня есть сервер или дежурный скрипт, который принимает сообщения и отправляет сообщения клиенту
знатакиЕсть проблема с сайтами, два сайта в одному выходит, один основной и второй залит в папку в нём же, но проблема состоит в том, что htaccess...
В программе была найдена причина Segmentation Fault при освобождении памяти (в деструкторе вектора)Как оказалось, происходило смещение begin-итератора...
Как реализовать простой GET/POST запрос без использования сторонних библиотек?