[PHP]FuelPHP 実行する前のSQL文をログに出力する

Read More


よくある、SQLを実行した後にSQL文を吐きだす方法じゃあない。

FuelPHPのクエリビルダーを使ってのSQL実行において、
実行後のSQL文の吐き出しでは、実行中にエラーがあった場合SQLの確認ができない。
# エラーが発生すると処理がそこで止まるため

ネットで調べるとだれもかれもがSQL実行後に出力する方法ばかり書いていてそれしかHITしない。
「どのようなSQLが走ったがために出たエラーなのか」を確認したいのに!


適当にググってパッと出てこなかった今の現状にショックだった。
誰もそんな要望がないのだろうか…

今後の自分のために実行前のSQL文を確認する方法をメモとして残しておく。


■実行前のSQL文をログ出力する
<?php
$db = \db::select('カラム名')->from('テーブル名')->where('条件');
logger('DEBUG', $db->compile()); // 実行前にSQL出力
$res = $db->execute()->as_array();
logger('DEBUG', \DB::last_query()); // 実行後にSQL出力
?>


$db->compile()という部分がSQLを生成している部分。
上記の例では実行前と実行後にそれぞれSQLが出力される。



こうなると今後は以下のように組むのがスマートかも知れない。
<?php
$sql = \DB::select('カラム名')->from('テーブル名')->where('条件')->compile();
logger('DEBUG', $sql);
$res = \DB::query($sql)->execute()->as_array();
?>




うん、書きながらだんだんこれがいいような気がしてきた。