Как работает параметризованный запрос PDO

ПОЖАЛУЙСТА, ВНИМАТЕЛЬНО ПРОЧИТАЙТЕ ВОПРОС. Это не обычно глупо "мой код не работает !!!" вопрос.

Когда я запускаю этот код сумышленная ошибка

try {
  $sth = $dbh->prepare("SELECT id FROM users WHERE name INN(?,?) ");
  $sth->execute(array("I'm","d'Artagnan"));
} catch (PDOException $e) {
    echo $e->getMessage();
}

Я получаю это сообщение об ошибке

У вас есть ошибка в синтаксисе SQL ... возле 'INN (' I \ 'm', 'd \' Artagnan ')' в строке 1

Но я годами думал, что запрос и данные отправляются на сервер отдельно и никогда не мешают. Таким образом, у меня есть несколько вопросов (хотя я сомневаюсь, что кто-нибудь получил ответ ...)

Откуда он получает такое знакомое строковое представление - в кавычках и экранированный? Это сделано специально, чтобы сообщить об ошибке или это часть реального запроса?Как это работает в реальном? Заменяет ли он заполнитель данными или нет?Есть ли способ получить весь запрос, а не только его часть, для целей отладки?

Обновить

mysqli делает как положено: выдает ошибку говоритnear 'INN(?,?)'

Ответы на вопрос(2)

Ваш ответ на вопрос