Cita: Debería funcionar, porque tanto los manuales de MySQL y PHP indican que todo ahí está correcto.
Pues te equivocas de nuevo, el manual dice que execute() devuelve FALSE en caso de error.
Por favor, separa el statement en otra variable y depura el error con errorInfo(), lee lo siguiente:
http://php.net/manual/es/pdostatement.errorinfo.php
Así ya sabrás el error exacto que cometes.