2017/11/29

PHP の PDO で debugDumpParams の出力をファイルなどに保存

SQL の実行結果を確認しようにも bindValue や bindParam を使っていると、実行内容を取得できない
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; }

通常は 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() を使用したのと同じ }


0 件のコメント: