我正在寻找一种方法来查看生成的查询字符串,但没有执行它。
请注意,查询之前尚未执行过。 (我不想要$this->db->last_query();
)
我希望有一个类似$this->db->echo_query_string($table_name = '');
的名称的方法完全像 $this->db->get($table_name = '');
但唯一的区别是 {{ 1}}执行代码,但get()
只回显查询字符串而不执行。
答案 0 :(得分:25)
您可以通过以下任一功能
查看已编译的查询/* SELECT */ $this->db->_compile_select();
/* INSERT */ $this->db->_insert();
/* UPDATE */ $this->db->_update();
答案 1 :(得分:20)
您无需更改codeigniter中的任何文件,因为它已经提供了一种方法来执行此操作。
使用
echo $this->db->last_query();
将产生
select * from some_table...
就是这样。
答案 2 :(得分:10)
我在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()
哪个运行查询
答案 3 :(得分:3)
自Codeigniter第3版起,请参阅this网址以及this。
echo $this->db->update_string();
或echo $this->db->get_compiled_update();
echo $this->db->insert_string();
或$this->db->get_compiled_insert();
echo $this->db->get_compiled_delete();
echo $this->db->get_compiled_select();
答案 4 :(得分:0)
您可以使用一些公共方法来获取SQL查询
$sql = $this->db->get_compiled_select()
$sql = $this->db->get_compiled_insert()
$sql = $this->db->get_compiled_update()
$sql = $this->db->get_compiled_delete()
答案 5 :(得分:0)
来自 CI 3.1.11 以下代码将帮助您
$this->db->get_compiled_select()
更多详情请访问 https://codeigniter.com/userguide3/database/query_builder.html#selecting-data