2013-04-11 13 views
27

クエリの実行は、次の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();は、クエリ文字列を取得する信頼できる方法です。すべての

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

のようなメソッドを取得するにlast_queryはあなたが行う必要があります実行せずに、クエリ文字列を取得したい場合は

$this->db->last_query(); 

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

答えて

61

クエリの実行が起こりますこの。 システム/データベースに行く/ DB_active_rec.phpは、これらの機能から、パブリックまたは保護されたキーワードを削除

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') 

を使用する必要があります。

Take a look at this example

+0

ようこそ!彼らは新しいバージョンのCIにこれらの2つのメソッド(および挿入、更新、削除など)を追加して、ハッキングする必要はありません。 –

+0

@raheelshanこれはちょうど私の人生を救った。あなたがなぜこの機能を保護されたのかについての情報はありますか? http://stackoverflow.com/questions/9232316/is-there-a-function-like-compile-select-or-get-compiled-select – motto

+0

「_」でプライベートアクセスを意味するメソッドを呼び出さないでください(外からではない)。これは解決策ではなく、後の更新で問題になる(メソッドに実際のアクセスレベルを追加したとき)。 – Roland

関連する問題