Předpokládám, že máte na mysli, že chcete konečný SQL dotaz s interpolovanými hodnotami parametrů. Chápu, že by to bylo užitečné pro ladění, ale takto připravené příkazy nefungují. Parametry nejsou kombinovány s připraveným příkazem na straně klienta, takže PDO by nikdy nemělo mít přístup k řetězci dotazu kombinovanému s jeho parametry.
Příkaz SQL je odeslán na databázový server, když provádíte Prepare(), a parametry jsou odesílány samostatně, když provádíte provádění(). Obecný protokol dotazů MySQL zobrazuje konečné SQL s hodnotami interpolovanými po spuštění(). Níže je výňatek z mého obecného protokolu dotazů. Spustil jsem dotazy z mysql CLI, ne z PDO, ale princip je stejný.
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
Můžete také získat, co chcete, pokud nastavíte atribut PDO PDO::ATTR_EMULATE_PREPARES. V tomto režimu PDO interpoluje parametry do SQL dotazu a odešle celý dotaz, když spustíte(). Toto není skutečně připravený dotaz. Výhody připravených dotazů obejdete interpolací proměnných do řetězce SQL před vykonáním().
Znovu komentář od @afilina:
Ne, textový SQL dotaz není v kombinaci s parametry během provádění. PDO vám tedy nemá co ukázat.
Pokud interně použijete PDO::ATTR_EMULATE_PREPARES, PDO vytvoří kopii dotazu SQL a před provedením přípravy a spuštění do něj interpoluje hodnoty parametrů. Ale PDO nevystavuje tento upravený SQL dotaz.
Objekt PDOStatement má vlastnost $queryString, ale tato je nastavena pouze v konstruktoru pro PDOStatement a není aktualizována, když je dotaz přepsán pomocí parametrů.
Bylo by rozumné, aby PDO požádalo o vystavení přepsaného dotazu. Ale ani to by vám neposkytlo „úplný“ dotaz, pokud nepoužijete PDO::ATTR_EMULATE_PREPARES.
Proto ukazuji výše uvedené řešení použití obecného protokolu dotazů serveru MySQL, protože v tomto případě je na serveru přepsán i připravený dotaz se zástupnými symboly parametrů, přičemž hodnoty parametrů se vyplní do řetězce dotazu. To se však děje pouze během protokolování, nikoli během provádění dotazu.