SQLのログが見たい場合に、バインドパラメータが?のままなので
不便である。あくまで簡易的なんだけど、メソッドを作った。
SC_Queryクラスに以下のgetBindSqlLogメソッドを追加。
SC_Queryクラスにselectメソッドがあるので、そこに以下追加
/**
* バインドパラメータをバインドしたかたちででのSQLログを出力する
* @param String $sqlse $this->getSqlの戻り値(バインドパラメータ以外は組み立てられたかたち)
* @param array $arrWhereVal バインドパラメータの配列
*
* ※preg_replaceを置換に使用しているので、文字化けするかもしれない
*/
public function getBindSqlLog($sqlse, $arrWhereVal) {
foreach ($arrWhereVal as $key=>$value) {
//数値か否かチェックし、数値じゃない場合はシングルクオートでがこむ
//TODO カラムの型判定をしていないので簡易的
if(!preg_match("/^[0-9]+$/",$value)){
$value = "'" . $value . "'";
}
$sqlse = preg_replace("/\?/", $value, $sqlse, 1);
}
echo $sqlse ."\n";
}
追加対象のメソッド
public function select($cols, $from = '', $where = '', $arrWhereVal = array(), $fetchmode = MDB2_FETCHMODE_ASSOC)
{
$sqlse = $this->getSql($cols, $from, $where, $arrWhereVal);
$this->getBindSqlLog($sqlse, $arrWhereVal); ← これこれ
return $this->getAll($sqlse, $arrWhereVal, $fetchmode);
}