1

プリペアドステートメントを使用してPDOを介して送信されるより複雑なクエリのいくつかで問題が発生しています。errorInfo()は構文エラーを表示するのに役立ちますが、実際には論理エラーやクエリの一部を表示するわけではありません。

PDOが最後に実行したクエリをエコーアウトする方法はありますか?のように、データベースに送信される実際のクエリ?クラスはそれをどこかのデータベースに送信するので、それをどこかに保存する必要がありますか?それを捕まえる方法や方法はありますか?

現在、私のデバッグシステムは?を含むクエリのみをエコーアウトします。実際のパラメータの代わりに、エラーがロジックにある場合はあまり役に立ちません。

ありがとう!

4

2 に答える 2

1

PDOStatement::debugDumpParamsを試しましたか? パラメータに関する詳細情報が表示されます。

マニュアルから:

準備されたステートメントに含まれる情報を出力に直接ダンプします。使用中の SQL クエリ、使用されているパラメーターの数 (Params)、パラメーターのリスト、それらの名前、整数としての型 (paramtype)、キーの名前または位置、値、およびクエリ内の位置を提供します。 (これが PDO ドライバーでサポートされている場合、それ以外の場合は -1 になります)。

于 2012-05-10T11:08:22.817 に答える
0

mysql-proxy を試すことを検討してください: http://lamp-dev.com/wp-content/uploads/mysql-proxy.zip

php で使用する拡張機能は関係ありません。プロキシとして機能する php と mysql のちょうど中間にあり、すべてのクエリを「そのまま」表示します。start.bat で DSN を変更するだけです。このバージョンは Windows ベースであることに注意してください。

php で接続を変更してから、mysql-proxy に接続する必要があります。

言い忘れましたが、これは mysql を使用する場合にのみ意味があります。RDBMS を指定していません。PDO は異なるドライバーで動作する可能性があります。

于 2012-05-10T11:05:53.393 に答える