Задать вопрос
@ortsuev33

Как лучше реализовать?

У меня есть две таблицы , в одной я вставляю одну запись а в другой 1 или более,
я написал функция в случае успешности первой (вставки в первую таблицу) то вставляю остальные ,второй запрос происходит в цикле foreach вызывая мою функцию(и каждый вызов функции происходит insertво вторую таблицу)
Какие недостатки в этом способе и как лучше реализовать?
  • Вопрос задан
  • 87 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 2
kawabanga
@kawabanga
Вы сами озвучили недостаток.
(и каждый вызов функции происходит insertво вторую таблицу)

К чему он может приводить? Да много к чему. К примеру, у вас приложение, которое работает с финансами. Вы загрузили 15 элементов из 70 и произошел сбой. Куда копать? что делать?
Решение - формировать одним запросом и сразу посылать его.

Читайте про транзакции, оберните вашу функцию в транзакцию.
Ответ написан
@d-stream
Готовые решения - не подаю, но...
Как уже сказали - такие операции скорее всего неделимые (транзакции) и правильный, человеческий способ - делать это на стороне сервера. Например вызывая stored procedure, которая в рамках begin transaction … end transaction выполнит (или не выполнит) все действия.

И богомерзкий с точки зрения sql цикл (foreach) будет не нужен.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽