http://php.net/manual/en/pdo.prepare.php гласи:
Както показва това, вероятната причина кодът ви да работи на един сървър, а не на друг е, че PDO::ATTR_EMULATE_PREPARES
е деактивиран на сървъра, на който кодът не работи. Както се казва в документацията, този атрибут ефективно премахва ограничението, което ви пречи да използвате маркер за параметър със същото име два пъти (заедно с някои други ограничения).