Многократная вставка в таблицы MySQL - PullRequest
0 голосов
/ 07 апреля 2011

Я сталкиваюсь с проблемой при вставке в таблицы MySQL.У меня есть 3 связанные таблицы для вставки при сохранении, но я хочу убедиться, что либо все запросы выполняются, либо ни один из них.Я сделал это в C #, но я хочу знать, как я могу сделать это в PHP.

1 Ответ

3 голосов
/ 07 апреля 2011

Чтобы иметь поведение «все или ничего», вам нужно использовать транзакцию:

  • начать транзакцию
  • выполнить ваши запросы
  • , есливсе запросы были выполнены успешно, фиксация
  • else, откат.


В PHP при работе с PDO ,Вы хотите использовать PDO::beginTransaction(), PDO::commit() и PDO::rollback() методов.

При работе с MySQLi вы захотите использовать mysqli::commit()и mysqli::rollback() - после отключения автоматической фиксации с помощью mysqli::autocommit().


Для обнаруженияесли запрос не удался, вам нужно:

  • Для PDO использовать PDO::setAttribute(), чтобы при возникновении ошибки возникали исключения.
  • С MySQLi mysqli::query() возвращает false в случае сбоя запроса.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...