web-dev-qa-db-ja.com

Codeigniter:$ this-> db-> last_query();クエリを実行しますか?

クエリの実行は、次のcodeigniterアクティブレコードステートメントのget_where()句で発生しますか?

$this->db->select('*');
    $q = $this->db->get_where('Contacts', array('id' => $contact_id));

    $sql = $this->db->last_query();

または、result_array()を呼び出すと発生しますか?

また、$this->db->last_query();は、クエリ文字列を取得する信頼できる方法です。

40
James Bond

クエリの実行は、次のようなすべてのgetメソッドで発生します。

$this->db->get('table_name');
$this->db->get_where('table_name',$array);

Last_queryには実行された最後のクエリが含まれています

$this->db->last_query();

実行せずにクエリ文字列を取得するには、これを行う必要があります。 system/database/DB_active_rec.phpに移動しますこれらの関数からpublicまたはprotectedキーワードを削除します

public function _compile_select($select_override = FALSE)
public function _reset_select()

これで、クエリを作成して変数で取得できます

$this->db->select('trans_id');
$this->db->from('myTable');
$this->db->where('code','B');
$subQuery = $this->db->_compile_select();

ここでクエリをリセットして、別のクエリを書きたい場合はオブジェクトをクリアします。

$this->db->_reset_select();

そして、事は終わりました。乾杯!!!注:この方法を使用する場合は、使用する必要があります

$this->db->from('myTable')

の代わりに

$this->db->get('myTable')

クエリを実行します。

この例を見てください

82
Muhammad Raheel