重複の可能性:
PDO プリペアド ステートメント
PHP で mysqli 拡張機能を使用していますが、サーバー上で実行されるように準備されたクエリを確認する方法はあるのでしょうか。たとえば、クエリは次のようなものです。
select * from table1 where id = ? and name = ?
しかし、次のように、値が入力された後にクエリを表示したい:
select * from table1 where id = 20 and name = "John"
重複の可能性:
PDO プリペアド ステートメント
PHP で mysqli 拡張機能を使用していますが、サーバー上で実行されるように準備されたクエリを確認する方法はあるのでしょうか。たとえば、クエリは次のようなものです。
select * from table1 where id = ? and name = ?
しかし、次のように、値が入力された後にクエリを表示したい:
select * from table1 where id = 20 and name = "John"
mysqlクエリ ログを有効にすると、すべてのクエリがテキスト ファイルに記録され、確認できるようになります。
短い答え:いいえ。準備されたクエリは、予期したクエリに変換されることはありません。データベースサーバーによって直接実行されます。mysql のクエリ ログまたは PDO の文書化されていない関数を使用できますdebugDumpParams
が、どちらも概算です。
どこで見ますか?クエリがあり、準備されたパラメーターがあるコードの場合は、それらを個別にログに記録するか、元のクエリ文字列に置き換えます。バインディングが失敗した場合はエラーが発生します。それ以外の場合は、指定した値と同じ値が「入力」されることを期待する必要があります。
それは、私がmysqlのクワイアをデバッグしているほとんどの場合の方法です:
$q = "select * from table1 where id = ".$id." and name = ".$name; エコー $q;
出力は、クエリに割り当てられたすべての変数を生成します。
あなたが何を望んでいるのか、私があなたを正確に理解したことを願っています。