Функция для возврата оператора 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 разных запроса. Потому что, когда вы будете вызывать отмену. Это отменит все удаления, произошедшие для всех участников. Чтобы решить это, я бы предложил -
- Вы создаете новую таблицу, в которой храните информацию об удаленной записи, например, - delete_members.
- Когда пользователь требует отмены, извлеките данные из таблицы dele_members и вставьте в исходную таблицу членов.
- После успешной вставки в исходную таблицу удалите данные из таблицы удаления информации.
Я надеюсь, что это помогло.
Транзакции не сохраняются через запросы PHP. Если транзакция все еще открыта в конце первого запроса, она будет неявно откатываться, когда соединение MySQL закрывается в конце запроса. В результате больше нет транзакции для отката, когда позднее запрашивается отмена.
Если вы хотите реализовать эту функциональность, она должна быть реализована в логике приложения.