2013-04-11 31 views
27

Việc thực hiện truy vấn có xảy ra tại mệnh đề get_where() của tuyên bố ghi lại hoạt động ký hiệu mã sau không?

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

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

Hoặc điều đó xảy ra khi bạn gọi result_array()?

Và là $this->db->last_query(); một cách đáng tin cậy để nhận chuỗi truy vấn.

Trả lời

61

Việc thực hiện truy vấn xảy ra trên tất cả có được phương pháp như

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

Trong khi last_query chứa các truy vấn cuối cùng được chạy

$this->db->last_query(); 

Nếu bạn muốn nhận được chuỗi truy vấn mà không thực hiện, bạn sẽ phải làm điều này. Tới hệ thống/cơ sở dữ liệu/DB_active_rec.php Hủy bỏ từ khóa công cộng hoặc bảo vệ khỏi các chức năng này

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

Bây giờ bạn có thể viết truy vấn và nhận được nó trong một biến

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

Bây giờ thiết lập lại truy vấn vì vậy nếu bạn muốn để viết một truy vấn khác, đối tượng sẽ bị xóa.

$this->db->_reset_select(); 

Và việc này được thực hiện. Chúc mừng !!! Lưu ý: Trong khi sử dụng cách này bạn phải sử dụng

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

thay vì

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

chạy truy vấn.

Take a look at this example

+0

Chào mừng và Không vấn đề gì! Họ sẽ thêm hai phương pháp này (và một số khác để chèn, cập nhật và xóa vv) trong phiên bản mới của CI, vì vậy chúng tôi sẽ không phải hack nó. –

+0

@raheelshan điều này vừa cứu mạng tôi. bạn có bất kỳ thông tin nào về lý do tại sao họ thực hiện chức năng này được bảo vệ không? http://stackoverflow.com/questions/9232316/is-there-a-function-like-compile-select-or-get-compiled-select – motto

+0

Vui lòng không gọi bất kỳ phương thức nào có '_' có nghĩa là truy cập riêng tư (không phải từ bên ngoài). Đó không phải là giải pháp nhưng là một vấn đề với các bản cập nhật sau này (khi chúng thêm các mức truy cập thực sự vào các phương thức của chúng). – Roland

Các vấn đề liên quan