Функция для возврата оператора 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;
}

    }

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

2 ответа

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

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

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

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

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

Другие вопросы по тегам