Я бы убрал strtoupper. Он не нужен. Если программист на клиентсайде перепутал большие буквы с маленькими — пусть исправляет ошибку сам, а не скрипт за него это делает.
Собирать запрос к БД руками — неуклюже. Я бы свалил все в массив, и передал через плейсхолдеры вроде execute(«INSERT INTO ?table (?#) VALUES (?a)», $table, array_keys($data), array_values($data))
В остальном нормальный код, выполняющий свои функции. Хотя, конечно, кто-то предложит для этих целей сделать модели, репозитории, unit-of-work и что там еще придумал Мартин Фаулер для этих целей.
Если вам интересно, как это можно сделать сложнее, почитайте мануалы к любому фреймворку типа Yii или Zend или Symfony или Ruby on Rails или Джанго. Там вам расскажут про модели, валидаторы, хранилища, бекенды, слои абстракции и прочие умности.
И да, все эти ORM и фреймворки для PHP тяжелые, уродливые, и сам язык, из-за того что при каждом запросе надо инициализировать приложение заново, не позволяет их сделать нормальными, так что с точки зрения производительности лучше писать все руками.
Но я бы такой код писать не стал, так как мне надо, чтобы свойства модели и полей формы для ее модификации хранились в одном месте, а не были раскиданы по HTML-коду, яваскриптам и PHP-обработчикам. Забудешь же потом, где что менять, когда захочется например изменить лейбл у поля ввода. Также, ваш код не умеет ни делать валидацию переданных данных (передавай что хочешь — все запишет в БД), ни маппинг/сериализацию/джейсонизацию, а мне надо, чтобы все это было.