Функция, чтобы отменить оператор MySQL

Как я могу реализовать отменить изменения функции в моем приложении php, так что если пользователь, например, добавил нового участника в группу или удалил элемент, появится уведомление: выбранный элемент был удален, действие отмены удаления (ссылка, которая вызывает функцию отмены).

Ниже приведен рабочий код:

public function deleteRecord($id) {
$group = $this->query('SET autocommit=0');
$group = $this->query('DELETE FROM  `members` WHERE memberID = '.$id.'');

}public function undo_delete() {
$member = $this->query('rollback');
if($member) {
trigger_error('Undo action has been completed. ', E_USER_NOTICE);
return true;
}

}

Единственная проблема с этим кодом заключается в том, что транзакция не была отправлена, поэтому откат или выход из системы отменят все изменения, сделанные во время сеанса пользователя, я не уверен, что это лучший подход для создания функции повтора, любой предложения?

-3

Решение

Вы не сможете отменить с двумя различными запросами. Потому что, когда вы будете вызывать отмену. Это отменит все удаления, произошедшие для всех участников. Чтобы решить это, я бы предложил —

  1. Вы создаете новую таблицу, в которой храните информацию об удаленной записи, например, — delete_members.
  2. Когда пользователь требует отмены, извлеките данные из таблицы dele_members и вставьте в исходную таблицу членов.
  3. После успешной вставки в исходную таблицу удалите данные из таблицы удаления информации.

Я надеюсь, что это помогло.

1

Другие решения

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

Если вы хотите реализовать эту функциональность, она должна быть реализована в логике приложения.

0

По вопросам рекламы [email protected]