Как правильно отправить данные из формы POST-запросом и записать их в бд?
Главная беда задавателей вопросов на форуме в том, что они всегда задают совершенно не тот вопрос, который их интересует. 
Судя по коду, автор прекрасно знает, как "отправить данные из формы POST-запросом и записать их в бд". Спрашивается - зачем задавать этот вопрос? Загадка. 

Ведь настоящий вопрос звучит "Я написал код, который отправить данные из формы POST-запросом и записать их в бд, но он не работает. Как понять,  по какой причине он не работает, чтобы я мог это исправить?" - ну разве не так?

И ответ на этот - правильный вопрос -  будет очень простой: надо попросить об этом свой РНР. Не посторонних людей, которые могут разглядеть дурацкую опечатку в этой дремучей чаще из кода, а могут и не разглядеть. Тем более, что проблема может быть вообще не в коде. 
Надо всего лишь включить отображение ошибок. 

Для mysqli это делается командой 
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
Которая пишется перед коннектом.
Для РНР всё стандартно - error_reporting всегда в  E_ALL плюс display_errors в 1 на домашнем компьютере.

И после этого РНР сам всё расскажет и покажет. И где опечатка в запросе, и любые другие ошибки.
Исправьте код.
1) WHERE id=$id так как SQL не знает о синтаксисе С. И я не понял зачем у вас перезаписывается первичный ключ.
2) (рекомендация) Сделайте запись перед чтением - блок с обработкой $_POST переместить до вывода данных.
3) (рекомендация) Не плодите переменные - улучшите читаемость в разы.