PDO wordt niet verward door het vraagteken tussen de aanhalingstekens. Ik test dit gewoon met 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());
Het werkt prima, zonder fouten over een verkeerd aantal parameters. Uw fout wordt veroorzaakt door de manier waarop u parameters bindt, niet door de SQL-syntaxis.
Ik vermoed dat je ons niet de hele SQL-query hebt laten zien, want WHERE zonder FROM is sowieso een syntaxisfout. U moet dus extra tijdelijke aanduidingen voor parameters hebben die u ons niet heeft laten zien. Het zou ook handig zijn als je ons laat zien hoe je parameters bindt (of parameters doorgeeft om uit te voeren()).