PDO không bối rối trước dấu chấm hỏi bên trong dấu ngoặc kép. Tôi chỉ kiểm tra điều này với 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());
Nó hoạt động tốt, không có lỗi về một số thông số sai. Lỗi của bạn là do cách bạn liên kết các tham số, không phải do cú pháp SQL.
Tôi nghi ngờ rằng bạn đã không cho chúng tôi xem toàn bộ truy vấn SQL, vì dù sao thì WHERE không có FROM cũng là một lỗi cú pháp. Vì vậy, bạn phải có trình giữ chỗ tham số bổ sung mà bạn chưa hiển thị cho chúng tôi. Nó cũng sẽ hữu ích nếu bạn chỉ cho chúng tôi cách bạn đang ràng buộc các tham số (hoặc truyền tham số để thực thi ()).