PDO förväxlas inte av frågetecknet inuti citaten. Jag testar bara detta 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 fungerar bra, utan fel om fel antal parametrar. Ditt fel orsakas av hur du binder parametrar, inte av SQL-syntaxen.
Jag misstänker att du inte har visat oss hela SQL-frågan, eftersom WHERE utan FROM är ett syntaxfel ändå. Så du måste ha ytterligare parameterplatshållare som du inte har visat oss. Det skulle också vara till hjälp om du visar oss hur du binder parametrar (eller skickar parametrar till execute()).