http://php.net/manual/en/pdo.prepare.php estados:
Como esto indica, la razón probable por la que su código funciona en un servidor y no en otro es que PDO::ATTR_EMULATE_PREPARES
está deshabilitado en el servidor en el que falla el código. Como dice la documentación, este atributo elimina efectivamente la restricción que le impide usar un marcador de parámetro con el mismo nombre dos veces (junto con algunas otras restricciones).