PDO forveksles ikke af spørgsmålstegnet inde i citaterne. Jeg har lige testet dette med PHP 5.5.15.
$sql = "SELECT CONCAT('path/to/page/?id=', id) AS link FROM foo WHERE name = ?;";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(1, 'name');
$stmt->execute();
print_r($stmt->fetchAll());
Det fungerer fint, uden fejl om et forkert antal parametre. Din fejl er forårsaget af den måde, du binder parametre på, ikke af SQL-syntaksen.
Jeg formoder, at du ikke har vist os hele SQL-forespørgslen, for WHERE uden FRA er alligevel en syntaksfejl. Så du skal have yderligere parameterpladsholdere, som du ikke har vist os. Det ville også være nyttigt, hvis du viser os, hvordan du binder parametre (eller sender parametre til execute()).