В целом подход правильный, но главное здесь не пропустить SQL инъекцию.
В пхп скрипте надо один раз надо записать в массив все имена полей.
Потом пробегать по этому массиву и смотреть, заполнено ли соответствующее поле в массиве, пришедшем с клиента. Если заполнено - добавляем в запрос поле с плейсхолдером, а значение - в массив значений.
Последним пунктом добавляем в массив значений id
потом подготавливаем запрос и исполняем его
Пример кода можно посмотреть
здесь