Enzo, estou afastado do PHP faz muito tempo, mas o "certo ou errado" vai depender do contexto. Pouco código não quer dizer algo bom, e muito código não quer dizer algo ruim, pois novamente, depende do contexto.
Eu li seu código e apesar de fazer o que diz fazer, sinto que falta modelagem, ele está expondo os detalhes de implementação, sem abstração alguma. Mas novamente, qual o contexto? Se for uma prova de conceito, ótimo, pode ser feito de qualquer forma. Mas se for um software que vai precisar reaproveitar essa lógica em outros lugares, essa implementação lutará contra a evolução desse software.
Outro ponto que não saberia analisar por não estar mais familiarizado com PHP é a possibilidade de SQL Injection. As funções de filtro, como essa abaixo, se responsabiliza por esse tipo de injeção?
$dados = filter_input_array(INPUT_POST,FILTER_DEFAULT);
Pergunto isso, pois esses dados estão sendo diretamente concatenados na query que vai para o banco.