@Richard_Ferlow
Веб-программист

Mysqli — multi_query — как правильно использовать?

Грубо говоря, собираю запрос в одну переменную и потом делаю так

if (!$mysqli->multi_query($toadd)) {
    echo 'Insert ' . $i . ' Error: ' . $mysqli->error . '<br />';
} else {
    echo 'Импорт прошел успешно';
}


Хоть и пишет - выполнен успешно, но не сработало. Подозреваю, что неверно использую.
Беру тогда из примера

if ($mysqli->multi_query($toadd)) {
    do {
        if (!$mysqli->more_results()) {
            echo 'Insert ' . $i . ' Error: ' . $mysqli->error . '<br />';
            // exit();
        }
    } while ($mysqli->next_result());
} else
    echo 'Insert ' . $i . ' Error: ' . $mysqli->error . '<br />';
echo "end";


Так ошибки, если есть, не выводит. Да и получается, если я правильно понял, смысл в одну переменную весь запрос было собирать, если все равно циклом по нему проходиться.

В общем - как правильно запрос отправить одним целым?
  • Вопрос задан
  • 5434 просмотра
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Какой-то странный пример.
Обычно примеры выглядят по-другому.
строчка
if (!$mysqli->more_results()) {
позволит что-то вывести только если все результаты (и их ошибки!) уже кончились. Поэтому, в упрощенном варианте её надо просто убрать,
if ($mysqli->multi_query($toadd)) {
    do {
            echo 'Insert ' . $i . ' Error: ' . $mysqli->error . '<br />';
    } while ($mysqli->next_result());
}

а в каноническом - добавить в условие while.

Смысла выполнять мультизапросы, действительно, немного. В 99.999% случаев одинарные запросы лучше.
Если только УЖЕ есть готовый дамп - тогда имеет смысл применять эту функцию. Специально же собирать запросы в кучу не нужно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽