データベースで実行される準備済みクエリを表示する方法はありますか? [複製]

StackOverflow https://stackoverflow.com/questions/305179

  •  08-07-2019
  •  | 
  •  

質問

  

可能な重複:
   PDO準備済みステートメント

PHPでmysqli拡張モジュールを使用していますが、サーバー上で実行される準備済みクエリを表示する方法はあるのでしょうか。クエリは次のようなものです

select * from table1 where id = ? and name = ?

しかし、次のように、値が入力された後にクエリを表示します:

select * from table1 where id = 20 and name = "John"
役に立ちましたか?

解決

プリペアドステートメントの複製

簡単な答え:いいえ。準備されたクエリは、期待したクエリに変換されることはありません。データベースサーバーによって直接実行されます。 mysqlのクエリログまたはPDOのドキュメント化されていない関数 debugDumpParams を使用できますが、どちらも単なる近似です。

他のヒント

mysqlクエリロギングを有効にすると、確認するためにすべてのクエリをテキストファイルに記録します。

どこで見る? クエリがあり、準備済みのパラメーターがある場合は、それらを個別にログに記録するか、元のクエリ文字列で置き換えます。 バインドに失敗するとエラーが発生します。そうでない場合は、同じ値が「入力」されると予想されるはずです。指定したとおりに。

mysqlがデバッグするほとんどの場合に必要な方法:

$ q =" select * from table1 where id ="。$ id。"そしてname ="。$ name; echo $ q;

出力は、クエリに割り当てられたすべての変数を生成します。

あなたが望んでいたことを正確に理解したことを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top