A maneira como a consulta parametrizada do PDO funciona

LEIA ATENTAMENTE A PERGUNTA. Não é bobo comum "meu código não funciona !!!" Pergunta, questão.

Quando executo esse código comerro pretendido

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

Recebo esta mensagem de erro

Você tem um erro na sintaxe SQL ... próximo a 'INN (' I \ 'm', 'd \' Artagnan ')' na linha 1

Mas pensei durante anos que a consulta e os dados eram enviados para o servidor separadamente e nunca interferiam. Portanto, tenho algumas perguntas (embora duvide que alguém tenha uma resposta ...)

De onde ela tira uma representação de string tão familiar - citada e escapada? Está sendo feito especialmente para relatar um erro ou faz parte da consulta real?Como isso funciona em real? Ele substitui um espaço reservado por dados ou não?Existe uma maneira de obter uma consulta inteira, e não apenas uma parte dela, para fins de depuração?

Atualizar

mysqli faz como esperado: gera um erro diznear 'INN(?,?)'

questionAnswers(2)

yourAnswerToTheQuestion