codeigniter活动记录,生成,但不执行查询

时间:2011-02-25 04:38:40

标签: php codeigniter activerecord

我正在使用一个库,需要将sql查询作为字符串提供给它的工作。

我正在使用CodeIgniter和他们的数据库类的活动记录实现。

我知道我可以像这样回应SQL语句......但我只想生成这个查询,而不是执行它。

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

任何帮助实现这一目标都会很棒!

6 个答案:

答案 0 :(得分:6)

有一点hack你可以去system / DB_active_rec.php并删除protected keyword form _compile_select方法,现在

return $this->db->_compile_select();

也可以使用$this->db->from('table');

而不是get()因为get会执行查询 这是一个例子

function index(){
    $this->db->select('blah blah');
    $this->db->from('table');
    $string = $this->db->_compile_select();
    return $string;
}

答案 1 :(得分:5)

取决于它的查询类型。插入和更新有方法可以让你这样做。

$this->db->set('foo', $bar);
$this->db->update_string('table'); // UPDATE table SET foo = "bar"

答案 2 :(得分:3)

您正在使用的last_query()函数返回查询字符串,它不会执行它。尝试将函数return赋值给变量以在库中使用。

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

答案 3 :(得分:2)

我不知道这是否是一种安全的做法,但db对象将其查询存储在queries属性中,因此您可以通过以下方式获取它:

$this->db->queries

返回一组查询。

答案 4 :(得分:0)

从Codeigniter 3开始,您可以使用get_compiled_select()

要在CI3之前使用它,请参阅Is there a function like _compile_select or get_compiled_select()?

答案 5 :(得分:0)

Codeignitier为此提供了一些公共方法。

获取SELECT查询

$sql = $this->db->get_compiled_select()

获取INSERT查询

$sql = $this->db->get_compiled_insert()

获取UPDATE查询

$sql = $this->db->get_compiled_update()

获取DELETE查询

$sql = $this->db->get_compiled_delete()