У меня не конкретно ответ на поставленный вопрос, но просто чтобы было понятнее, почему это работает так. PDO использует параметризованные запросы, это значит, что в БД запрос сохраняется именно как
SELECT *
FROM `table`
WHERE `id` = :id
при следующем вызове этого запроса, но с другими параметрами, движок базы данных уже не будет компилировать этот запрос, просто выполнит его с новыми параметрами. Можно сказать, что это подобие хранимых процедур.