PDO プリペアド ステートメントをデバッグする場合、多くの場合、生の SQL クエリ文字列にアクセスできると便利です。が処刑された。ただし、準備されたステートメントでは通常、実際のクエリからパラメーター データを分離する必要があるため、これを行う方法はすぐには明確ではありません。
通常の SQL ステートメントとは異なり、クエリとパラメータは一緒にデータベースに送信されますが、準備されたステートメントは 2 つの部分に分割されます:
この分離により、SQL インジェクション攻撃が防止されます。ただし、これは、PDO が補間されたパラメーター値を含む結合されたクエリ文字列に直接アクセスできないことも意味します。
補間されたクエリ文字列にアクセスするには、1 つのオプションが必要ですPDO::ATTR_EMULATE_PREPARES 属性を設定することです。このモードでは、PDO がクライアント側で準備されたクエリを強制的にエミュレートし、データベースに送信する前にクエリとパラメータを結合します。
ただし、この方法には次の点に注意してください。
MySQL を使用している場合は、一般クエリ ログを有効にして補間されたクエリ文字列をキャプチャできます。ただし、このアプローチでは、クエリがすでに実行されている必要があります。
残念ながら、エミュレーションやロギングに頼らずに、補間されたクエリ文字列を PDO から直接取得する信頼できる方法はありません。
以上がPDO プリペアド ステートメントによって実行された実際の SQL クエリを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。