<?php
//接続
$dbh = new PDO("mysql:host=localhost;dbname=database;","foobar","20111111");
//SQL準備
$sth = $dbh->prepare("select * from hoge where id=?");
$sth->bindParam(1, 12345, PDO::PARAM_INT);
//--------------------------
// ここのあたりで取得したい
//--------------------------
//実行
$sth->execute();
//--------------------------
// もしくはここ
//--------------------------
?>
プレースホルダーが反映された形のSQLを実行前後で記録したいと考えているのですが、他に何か良いアイデアやライブラリがあれば教えてください。
上記の例だと、以下の文字列を取得したいという意図になります。
select * from hoge where id=12345
#どうでも良いですが質問文ではてな記法が使えないの直してほしいですね。
#スーパーpre使いたい…。
$sth = $dbh->prepare("select * from hoge where id=?"); $paramId = 12345; $sth->bindParam(1, $paramId, PDO::PARAM_INT); echo preg_replace('/id=\?$/', 'id='.$paramId, $sth->queryString);
参考:
php - Getting a PDO query string with bound parameters without executing it - Stack Overflow