web-dev-qa-db-ja.com

codeigniter Active Recordで実行前および実行なしのエコークエリ

クエリの生成された文字列を表示する方法を探していますが、withoutそれを実行しています。

クエリは以前に実行されていないことに注意してください。 ($this->db->last_query();は必要ありません)

$this->db->echo_query_string($table_name = '');のような名前のメソッドが使用されることを願っていますまったく同じように$this->db->get($table_name = '');しかし、唯一の違いはget()はコードを実行しますが、echo_query_string()はクエリの文字列をエコーするだけです実行なし

23
Mohammad Naji

これらの関数のいずれかでコンパイルされたクエリを見ることができます

/* SELECT */ $this->db->_compile_select();
/* INSERT */ $this->db->_insert();
/* UPDATE */ $this->db->_update();
28
Stewie

Codeigniterでファイルを変更する必要はありません。変更するためのメソッドが既に提供されているためです。

を使用して

echo $this->db->last_query();

生産します

select * from some_table...

そしてこれがそれです。

19
BrCoder08

DB_active_rec.phpにこの小さなメソッドを追加しました

function return_query()
{
    return $this->_compile_select();
}

使用法

$this->db->select('id,user_name')->from('user')->where('id',1);

$string =   $this->db->return_query();
echo $string;

結果

SELECT `id`, `user_name` FROM (`user`) WHERE `id` = 1

このようにして、使用することにバインドされています

$this->db->from()

の代わりに

$this->db->get()

クエリを実行する

11
Muhammad Raheel

Codeigniterのバージョン3の時点で、 this urlおよび this も参照してください。

  • echo $this->db->update_string(); OR echo $this->db->get_compiled_update();
  • echo $this->db->insert_string(); OR $this->db->get_compiled_insert();
  • echo $this->db->get_compiled_delete();
  • echo $this->db->get_compiled_select();
3
Amitabh Das

いくつかのpublicメソッドを使用してSQLクエリを取得できます

SELECTクエリを取得する

$sql = $this->db->get_compiled_select()

INSERTクエリを取得する

$sql = $this->db->get_compiled_insert()

UPDATEクエリを取得する

$sql = $this->db->get_compiled_update()

DELETEクエリを取得する

$sql = $this->db->get_compiled_delete()
1
Samuel Dauzon