function getMessages() {
...
$sth->execute( array(':site' => $site));
...
}
Du schickt Dein Kind ("getMessages, kauf alles, was auf dem Zettel steht") zum Bäcker. Aber ohne ihm den Zettel mit Deinen Wünschen mit zu geben. Warum kommt das Kind mit der Nachricht zurück, dass es nichts gekauft hat, weil es zwar Geld, aber keinen Zettel dabei hatte?
Was fehlt also erst bei Deiner Funktionsdefinition von getMessages() und dann auch noch beim Funktionsaufruf?