1. ホーム
  2. php

[解決済み] PHP with PDOで、最終的なSQLのパラメトリッククエリを確認する方法は?[重複している]。

2022-04-30 20:21:34

質問内容

PHP で、PDO を使ってパラメータ付きのクエリで MySQL データベースにアクセスする場合、 (すべてのトークンを置き換えた後の) 最終的なクエリをどのようにチェックすればよいのでしょうか?

データベースで実際に実行される内容を確認する方法はありますか?

どのように解決するのですか?

ということで、最後に自分の質問に答えて、完全な解答を記録しておこうと思います。でも、このヒントを提供してくれたBen JamesとKailash Baduに感謝しなければならない。

短い回答

ベン・ジェームスさんのおっしゃるとおりです。 NO .

なぜなら、query-with-tokens とパラメータは別々にデータベースに送信されるからです。 データベース側でのみ、完全なクエリが存在します。

トークンを置き換える関数を PHP 側で作ろうとしても、置き換え処理が SQL と同じになるとは限りません (token-type や bindValue と bindParam の違いなど、厄介なものがあります。) 。

回避策

ここで、Kailash Badu氏の回答について詳しく説明します。 すべてのSQLクエリをログに記録することで、サーバー上で実際に何が実行されているかを確認することができます。 mySQLでは、my.cnf(Wampサーバーの場合はmy.ini)を更新して、次のような行を追加することで実現できます。

log=[REPLACE_BY_PATH]/[REPLACE_BY_FILE_NAME]

ただ、これを本番で走らせるのはやめてください!!!