Beim Debuggen von PDO-vorbereiteten Anweisungen ist es oft hilfreich, Zugriff auf die Roh-SQL-Abfragezeichenfolge zu haben wurde hingerichtet. Es ist jedoch nicht sofort klar, wie das geht, da vorbereitete Anweisungen typischerweise die Trennung von Parameterdaten von der eigentlichen Abfrage beinhalten.
Im Gegensatz zu regulären SQL-Anweisungen Wenn die Abfrage und die Parameter zusammen an die Datenbank gesendet werden, werden vorbereitete Anweisungen in zwei Teile aufgeteilt:
Diese Trennung verhindert SQL-Injection-Angriffe. Dies bedeutet jedoch auch, dass PDO keinen direkten Zugriff auf die kombinierte Abfragezeichenfolge mit interpolierten Parameterwerten hat.
Um auf die interpolierte Abfragezeichenfolge zuzugreifen, eine Option besteht darin, das Attribut PDO::ATTR_EMULATE_PREPARES festzulegen. Dieser Modus zwingt PDO dazu, vorbereitete Abfragen auf der Clientseite zu emulieren und die Abfrage und Parameter zu kombinieren, bevor sie an die Datenbank gesendet werden.
Diese Methode weist jedoch folgende Einschränkungen auf:
Wenn Sie MySQL verwenden, können Sie das allgemeine Abfrageprotokoll aktivieren, um die interpolierte Abfragezeichenfolge zu erfassen. Dieser Ansatz erfordert jedoch, dass die Abfrage bereits ausgeführt wurde.
Leider gibt es keine zuverlässige Möglichkeit, die interpolierte Abfragezeichenfolge direkt vom PDO abzurufen, ohne auf Emulation oder Protokollierung zurückzugreifen.
Das obige ist der detaillierte Inhalt vonWie kann ich die tatsächliche SQL-Abfrage sehen, die von meiner vorbereiteten PDO-Anweisung ausgeführt wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!