[CodeIgniter] クエリの実行結果が合わない時 – last_queryを利用してみる –

CodeIgniter

CodeIgniterを利用したプロジェクトでのコーディング中に

『自分では意図したクエリを書いているつもりでも、期待する実行結果がなぜか得られていない、実行結果がおかしい』

というような時があります。

コマンドラインやSQLクライアントなどを利用して、SQLを書いて見るとうまくいっているように思える・・・

こういう場合はクエリビルダで組んで実行した文とSQLを直接書いて実行した文が単純に異なるだけ、ってことも多いです。

そこで、とにかくコードを修正したり問題がないかクエリビルダの構文をひたすら確認したり、というのは結構な時間を浪費してしまいます。

そうした時間の浪費を避けるためにも last_queryメソッド を利用しましょう。

# $this->db->get(); や $this->db->query(); など任意のクエリ実行の後に埋める

$this->db->last_query();
 

上記を問題となっているクエリの実行後に置いてみると、最後に実行したクエリ文を返してくれます。

あとはデバッガで確認しても良いですし、echoやvar_dumpなどで吐かせても良いです。

そこで文に差異があればその部分を修正すれば問題解決となるんじゃないかと。

もし文の差異がなく実行クエリ文としての問題が見つからない場合でも、
少なくとも問題の切り分けとして前進する結果が得られてはいます。

他のプログラミングレベル上の問題かDB等の問題にまで及ぶかはケースによりますが、別のアプローチをとる際の前提としてもlast_queryメソッドは役に立つのかなと思います。

まとめ

開発時のちょっとした確認での用途として紹介しましたが、実行後のSQLをログとして残すような場合にも利用できそうです。

クエリビルダの構文が複雑になってくると、自分が気づいていなかった部分を通っていることが意外とあります。

上記のような便利なメソッドが用意されているので有効活用しましょう。

タイトルとURLをコピーしました