Suponho que você queira dizer a consulta SQL final, com valores de parâmetros interpolados nela. Entendo que isso seria útil para depuração, mas não é assim que as instruções preparadas funcionam. Os parâmetros não são combinados com uma instrução preparada no lado do cliente; portanto, o PDO nunca deve ter acesso à sequência de consultas combinada com seus parâmetros.
A instrução SQL é enviada ao servidor de banco de dados quando você prepara () e os parâmetros são enviados separadamente quando você executa (). O log de consultas gerais do MySQL mostra o SQL final com valores interpolados após você executar (). Abaixo está um trecho do meu log de consultas gerais. Eu executei as consultas da CLI do mysql, não da DOP, mas o princípio é o mesmo.
081016 16:51:28 2 Query prepare s1 from 'select * from foo where i = ?'
2 Prepare [2] select * from foo where i = ?
081016 16:51:39 2 Query set @a =1
081016 16:51:47 2 Query execute s1 using @a
2 Execute [2] select * from foo where i = 1
Você também pode obter o que deseja se definir o atributo PDO PDO :: ATTR_EMULATE_PREPARES. Nesse modo, o PDO interpola parâmetros na consulta SQL e envia a consulta inteira quando você executa (). Esta não é uma consulta preparada verdadeira. Você contornará os benefícios das consultas preparadas interpolando variáveis na string SQL antes de executar ().
Re comentário de @afilina:
Não, a consulta SQL textual não é combinada com os parâmetros durante a execução. Portanto, não há nada para a DOP mostrar.
Internamente, se você usar PDO :: ATTR_EMULATE_PREPARES, o PDO fará uma cópia da consulta SQL e interpolará os valores dos parâmetros nela antes de preparar e executar. Mas o PDO não expõe essa consulta SQL modificada.
O objeto PDOStatement possui uma propriedade $ queryString, mas isso é definido apenas no construtor da PDOStatement e não é atualizado quando a consulta é reescrita com parâmetros.
Seria uma solicitação de recurso razoável para a DOP solicitar que eles expusessem a consulta reescrita. Mas mesmo isso não forneceria a consulta "completa", a menos que você use PDO :: ATTR_EMULATE_PREPARES.
É por isso que mostro a solução alternativa acima ao usar o log de consultas gerais do servidor MySQL, porque, neste caso, mesmo uma consulta preparada com espaços reservados para parâmetros é reescrita no servidor, com os valores dos parâmetros preenchidos na cadeia de consulta. Mas isso é feito apenas durante o log, não durante a execução da consulta.