PHP の PDO で debugDumpParams の出力をファイルなどに保存
SQL の実行結果を確認しようにも bindValue や bindParam を使っていると、実行内容を取得できない
debugDumpParams を利用すると SQL へ渡った情報を標準出力に吐き出すことが出来る
その内容をファイルなどに保存する
通常は execute() の直後に debugDumpParams() を呼び出せば、標準出力に吐き出されますが
ob_start(関数名) で、内容をコールバック関数へ渡しています。今回は 標準出力へ表示する必要が無いので、ob_end_clean() を用いていますが、callback の戻り値を出力する場合は ob_end_flush() を利用します。
debugDumpParams を利用すると SQL へ渡った情報を標準出力に吐き出すことが出来る
その内容をファイルなどに保存する
$stmt->execute();
if( ob_start('callback') ){
try{
$stmt->debugDumpParams();
}finally{
// ob_end_flush();
ob_end_clean(); // callback からの戻り値を出力しない
}
}
function callback($buffer){ file_put_contents('sqlresult.txt', $buffer); return $buffer; }
function callback($buffer){ file_put_contents('sqlresult.txt', $buffer); return $buffer; }
通常は execute() の直後に debugDumpParams() を呼び出せば、標準出力に吐き出されますが
ob_start(関数名) で、内容をコールバック関数へ渡しています。今回は 標準出力へ表示する必要が無いので、ob_end_clean() を用いていますが、callback の戻り値を出力する場合は ob_end_flush() を利用します。
$stmt->execute();
if( ob_start('callback') ){
try{
$stmt->debugDumpParams();
}finally{
ob_end_flush(); // callback からの戻り値を出力する
// ob_end_clean();
}
}
function callback($buffer){ file_put_contents('sqlresult.txt', $buffer); return $buffer; // return ''; にすると ob_end_clean() を使用したのと同じ }
function callback($buffer){ file_put_contents('sqlresult.txt', $buffer); return $buffer; // return ''; にすると ob_end_clean() を使用したのと同じ }
コメント