http://php.net/manual/en/pdo.prepare.php stany:
Jak to wskazuje, prawdopodobną przyczyną, dla której Twój kod działa na jednym serwerze, a nie na innym, jest to, że PDO::ATTR_EMULATE_PREPARES
jest wyłączona na serwerze, na którym kod nie działa. Jak mówi dokumentacja, ten atrybut skutecznie usuwa ograniczenie uniemożliwiające dwukrotne użycie znacznika parametru o tej samej nazwie (wraz z kilkoma innymi ograniczeniami).