Abrufen (oder simulieren) vollständige Abfrage von PDO prepared statement

Stolperte ich über diese Frage von vor zwei Jahren.

Gibt es eine Möglichkeit die roh-SQL-string ausgeführt beim Aufruf von PDOStatement::execute() auf eine vorbereitete Anweisung? Für debugging-Zwecke wäre dies sehr nützlich sein.

Die Gewinner Antwort besagt, dass

[...] Sie können auch das bekommen, was Sie wollen, wenn Sie
einstellen des PDO-Attribut
PDO::ATTR_EMULATE_PREPARES. In diesem
Modus, PDO Parameter in interpolieren
die SQL-Abfrage aus und sendet das ganze
Abfrage, wenn Sie Sie ausführen().

Aber wird nicht erwähnt, wie man die resultierende Abfrage-string. Ich weiß, es ist eine schlechte Idee, Leistung klug, aber das stört mich nicht im debug-Modus. Weiß jemand, wie dies zu tun?

PS Wenn es eine Möglichkeit gibt, ich hätte wiedereröffnet /die Aufmerksamkeit auf die ursprüngliche zwei-Jahres-altes Thema, anstatt eine neue zu öffnen, bitte lassen Sie mich wissen.

  • Die akzeptierte Antwort nicht sagen Ihnen, wo Sie entdecken Sie die Abfrage: in Ihrem Datenbank-server anmelden.
  • Ja ich lese das auch. Er sagt: "MySQL-general query log zeigt die letzten SQL mit Werten interpoliert, nachdem Sie die execute()". Aber dann geht auf zu sagen, "Sie können auch das bekommen, was Sie wollen, wenn...", was darauf hindeutet, gibt es einen zweiten Weg. Das ist es, was ich herausfinden will. Wie es zu tun, ohne Zugriff auf den kompletten mysql-server-Protokoll.
  • Ich denke, es bedeutete, dass, anstatt uns auf die Protokolle für die vorbereitete Anweisung und dann die server-synthetisiert Anweisung danach können Sie auch PHP generieren, die vollständige SQL-Abfrage auf der client-Seite, und dann ist die einzige Sache, die im server-log wird die eigentliche SQL-Abfrage, die Sie ausgeführt. Das heißt, die Antwort war die Beschreibung der zwei verschiedenen Möglichkeiten, um die Abfrage in den server-log.
  • +1 Für diesen Kommentar! Aber ich hoffe immer noch, du liegst falsch 🙂
  • Drehen auf server-logs ist der beste Weg, um dies zu tun: wenn ich hatte nicht wartete Stunden, um es zu tun, es würde haben mich gerettet, Stunden: Anweisungen für die Protokollierung PDO prepared statements
  • Paniflov die Antwort von unten ist das, was ich gesucht hatte - einige von uns wollen-Abfragen geschrieben, um eine kombinierte Anwendung anmelden, anstatt auf einem dedizierten server anmelden, da die Korrelation mit Zeitstempel versehene Einträge aus einer Anwendung anmelden, die mit einem Datenbank-log ist sehr umständlich...

Schreibe einen Kommentar