O problema aqui é que você nunca executou o INSERT Adicione isso a ele: $stmt -> execute(); é por isso que nenhum erro retorna, porque não há nenhum; apenas algo "faltando";-) Referência: http://php.net/pdo.prepared-statements