回答:
クエリ文字列を表示するには:
print_r($this->db->last_query());
クエリ結果を表示するには:
print_r($query);
プロファイラークラスは、ページの下部にベンチマーク結果、実行したクエリ、および$ _POSTデータを表示します。プロファイラーを有効にするには、コントローラーメソッド内の任意の場所に次の行を配置します。
$this->output->enable_profiler(TRUE);
プロファイリングユーザーガイド:https : //www.codeigniter.com/user_guide/general/profiling.html
あなたはこれを使うことができます:
$this->db->last_query();
「最後に実行されたクエリを返します(結果ではなくクエリ文字列)。」
レッフ:https : //www.codeigniter.com/userguide3/database/helpers.html
ActiveRecordで生成されたSQLを表示できます。
クエリを実行する前に:
$this->db->_compile_select();
そしてそれが実行された後:
$this->db->last_query();
$this->db->get_compiled_select()
代わりに使用してください。
使用に失敗した後、_compiled_select()
またはオブジェクトをget_compiled_select()
印刷db
したところ、queries
プロパティのクエリを確認できます。
自分で試してください:
var_dump( $this->db );
クエリが1つしかないことがわかっている場合は、直接印刷できます。
echo $this->db->queries[0];
xdebugを使用して、VSCodeでこの値を監視し、それぞれの拡張子とCI v2.xを使用しています。私はexpresionを追加する$this->db->last_query()
時計のセクションで、私は追加xdebugSettings
launch.jsonで取得する非切捨て値のため、これらの線のようなノードを。
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9000,
"xdebugSettings": {
"max_data": -1,
"max_children": -1
}
},
そして、ブレークポイントを使用してデバッガーを実行し、最後に式を選択して、右クリック>値をコピーします。
私はまったく同じ問題を抱えていて、最終的に解決策を見つけました。私のクエリは次のように実行されます:
$result = mysqli_query($link,'SELECT * FROM clients WHERE ' . $sql_where . ' AND ' . $sql_where2 . ' ORDER BY acconame ASC ');
sqlコマンドを表示するには、クエリとまったく同じ内容の変数($ resultstring)を作成して、次のようにエコーするだけです。<?php echo $resultstring = 'SELECT * FROM clients WHERE ' . $sql_where . ' AND ' . $sql_where2 . ' ORDER BY acconame ASC '; ?>
できます!
get_compiled_select()
クエリを置き換える代わりに取得するために使用します
ここですべての回答を読みましたが、取得できません
echo $this->db->get_compiled_select();
動作するように、それは私にエラーを与えました、
行xxのコントローラーのコンテキスト 'Welcome'から保護されたメソッドCI_DB_active_record :: _ compile_select()を呼び出します
だから私protected
はファイルから以下の行から削除し\system\database\DB_active_rec.php
、それはうまくいきました
protected function _compile_select($select_override = FALSE)