PDO を使用して PHP のパラメータ化されたクエリを検査する方法
PHP でデータベース アクセスに PDO を利用する場合、パラメータ化されたクエリを採用すると、シールドによってセキュリティが強化されます。 SQL インジェクションに対して。ただし、トークンとパラメータを含むクエリは個別に送信されるため、データベースによって実行される実際のクエリを検証するのは困難な場合があります。
直接取得は不可能
としてBen James 氏は、PHP 側で完全な SQL クエリを取得する直接的な方法はないと説明しています。これは、データベースがトークンとパラメーターを含むクエリを個別に受け取り、実際のクエリがデータベース内で組み立てられるためです。 PHP 側で置換プロセスをエミュレートすることも、トークンの処理とバインド技術が異なるため、実行できません。
回避策としてのログ記録
実行された実際のクエリを検査するにはデータベースの場合、回避策として、すべての SQL クエリをログに記録する必要があります。 MySQL では、my.cnf (Windows 環境では my.ini) を変更し、次のような行を追加することでこれを実現できます。
log=[REPLACE_BY_PATH]/[REPLACE_BY_FILE_NAME]
ただし、これはデバッグ目的のみに使用し、システム内では使用しないでください。実稼働環境でパフォーマンスの低下を回避します。
以上が## PHP で PDO によって実行される実際のクエリを検査するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。