Игорь, используйте ZipArchive.
При нажатии кнопки отправляйте запрос, запускаете функцию, метод, как у Вас там будет оформлено и распаковываете архив в нужную директорию. По завершении возвращаете ответ с необходимыми данными.
DevMan, я тоже хотел это написать, думал, что просто надо выделить цветом, но тут ориентироваться на параметры и как их получать, если они из php, то почему бы и нет?.
Добрый день.
Ну почему бы и не проверять. Есть запись в таблицу users есть - продолжаем код.
Думаю, что Вам надо использовать транзакции, тем самым Вы можете избежать выполнение delete если запись в users_social не удалась. https://habr.com/ru/post/446662/
p.s. В ответах не рекомендуют полагаться на значение id, поэтому поправлю себя, проверку надо делать, но на успешность выполнения запроса, выполнился он или нет. Транзакции облегчат задачу.