2012-01-25 24 views
21

Tôi đang tìm cách xem chuỗi được tạo của truy vấn nhưng mà không cần thi hành nó.Truy vấn Echo trước khi thực thi và không được thực hiện trong trình mã hóa Bản ghi Hoạt động

Lưu ý rằng truy vấn chưa được thực thi trước đó. (Tôi không muốn $this->db->last_query();)

Tôi hy vọng có thể là một phương pháp với một cái tên như $this->db->echo_query_string($table_name = ''); được sử dụng hệt như$this->db->get($table_name = '');nhưng sự khác biệt chỉ được RẰNGget() thực thi mã, nhưng echo_query_string() chỉ vang chuỗi truy vấn mà không cần thực hiện.

+1

Đơn giản - nhưng có lẽ không hiệu quả - cách tôi sẽ làm là sửa đổi một chút truy vấn để tạo truy vấn sai lầm sao cho hệ thống hiển thị lỗi cùng với lỗi dự kiến ​​đơn giản và nó sẽ không được thực thi. – maan81

Trả lời

26

Bạn có thể thấy các truy vấn biên soạn bởi một trong những chức năng

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

Cảm ơn bạn. Điều đó có hiệu quả với các truy vấn chọn lọc không?Không có gì chính xác thay vì 'get()'? Tôi hy vọng nó có thể có một $ database_name tùy chọn như 'get()' –

+0

Để chèn $ this -> _ insert() để cập nhật $ this -> _ update() Nhưng hai yêu cầu ít đối số – Stewie

+0

Có tài liệu nào không về mô tả các phương pháp bạn đã đề cập? Tôi muốn biết chính xác các thông số mà họ chấp nhận. Tôi nghĩ rằng nó hầu như không có một tài liệu như vậy. Tôi có nên biết thêm chi tiết bằng cách chỉ xem mã? –

9

tôi đã thêm phương pháp này ít trong DB_active_rec.php

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

Cách sử dụng

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

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

quả

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

Bằng cách này, bạn đang bị ràng buộc để sử dụng

$this->db->from() 

Thay vì

$this->db->get() 

nào chạy truy vấn

12

Bạn không cần phải thay đổi bất kỳ tập tin trong CodeIgniter vì nó đã cung cấp một phương pháp để làm điều đó.

Sử dụng

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

sẽ sản xuất

select * from some_table...

Và đây là nó.

+0

why -ve votes? Câu trả lời dường như hoàn hảo với tôi. Hầu hết các phiếu bầu có lẽ không phải vì sự chán nản nên những gì còn thiếu là bình luận. – Sami

+14

- phiếu bầu vì người hỏi không muốn chạy truy vấn thực tế. Chỉ muốn truy vấn sẽ trông như thế nào. last_query() nhận được truy vấn cuối cùng được gửi đến DB. – scotsqueakscoot

+0

Đây sẽ là một trong những quyền! – Latrova

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