2011-06-01 90 views
1

有没有办法检索我查询中添加的“where”子句? 我使用foreach语句将当前查询的where子句中要添加的列添加到列表中,但由于子句可能为空(未添加列,foreach中存在0次迭代),查询将检索所有记录数据库因为没有限制在哪里。 当然,我可以使用布尔变量来知道每个foreach是否至少进行了1次迭代,但我想知道是否有可能检索到与我正在查询的相关信息。 八九不离十我正在使用的代码:检索CodeIgniter中的where子句Activerecord

foreach($columns as $column => $value){ 
    if($column!=''){ 
     $this->db->where($column,$value); 
    } 
} 
$this->db->get('mytable'); 

一些解释:

如果$列是emptry串,我不把它添加到查询。

$ columns var是一个对象(stdClass)。因此,如果查询中没有“where”语句,我不想​​用$ this-> db-> get()检索任何信息。我正在寻找的是类似于

if(! empty($this->db->where_clauses())) 
    $this->db->get('mytable'); 

是否有类似的东西?

谢谢。

回答

2

不能直接:它是一个黑客攻击的一位,但你可以这样做:

if(! empty($this->db->ar_where)) 

试一下,看看它是否工作。

+0

非常感谢。我还没有尝试过。 – ecruz 2011-06-03 16:18:57

-1
foreach($columns as $column => $value){ 
    if($column!=''){ 
     $this->db->where($column,$value); 
    } 
} 

if (count($columns) > 0) 
$this->db->get('mytable'); 
+0

这个答案是错误的。再看看这个问题。在所有索引都等于空字符串的情况下,对列进行计数将不会执行任何操作。看到这里:http://ideone.com/Sfs8I – treeface 2011-06-01 19:22:51

+0

等一下,他说:“想添加当前查询的where子句,但是,由于子句可能是空的(没有添加列,所以在foreach中有0次迭代)”。如果没有迭代,则表示其计数为0. – 2011-06-01 21:02:58