Lieber MB,
SELECT ?, ? FROM ? WHERE ? = ?;
array( 'user.first', 'user.last', 'user', 'id', '4' )
Im SELECT
-Statement müssen die Spaltennamen konkret ausformuliert stehen. Vergleiche:
SELECT user.first, user.last
FROM user
WHERE id = 4
SELECT 'user.first', 'user.last'
FROM 'user'
WHERE 'id' = 4
Wie Du siehst, sind die Spaltennamen (und der Tabellenname) als Zeichenketten maskiert worden, obwohl sie als Code-Bestandteile verstanden werden sollten. Daher kannst Du nur die Werte mit PDO-Platzhaltern setzen, nicht aber Spalten- oder Tabellennamen.
Liebe Grüße
Felix Riesterer