2011-10-05 20 views
0

我有一个方法可以采取变量$其中。然后传递给$ this-> db-> where($ where);声明。Codeigniter模仿where_in()函数与一个简单的where()语句

我想模仿一个特定函数where_in()的功能。

我有一个数组格式或内爆字符串格式的ID列表。

我试图通过$where=array('blog.ID IN'=>'1,3');

的方法都无济于事。

这是造成WHERE博客. ID IN '1,3' 是输出,而不是WHERE博客. ID IN '1','3'

谁能告诉我如何,我可以使用codeigniters其中()函数来模仿它的where_in()函数做什么?

感谢

+0

对不起,我不明白为什么你不能使用实际的'where_in()'方法或只是简单的'查询()'?你可以发布你的方法的代码?我觉得有一个更简单的方法来做到这一点.... –

+0

我不需要使用where()语句,它只是该函数被多个控制器使用,并使用where()语句使代码更便携.. Thx –

回答

0

尝试:

$array = [1,3]; 
$where='blog.ID IN' . join(',', $array); 
+0

我不知道你已经使用的阵列格式是什么,但没有上述的遗憾不起作用.. 输出WHERE'blog'.'ID' IN 1,3,而我相信WHERE'blog'.'ID' IN'1','3'是什么要求...谢谢 –

+0

好吧,那么也许这样:'$ where ='blog.ID IN \''。连接(“','”,$ array)。 '\''; ' – swatkins

0

你不能做这样的事?

function your_db_thingie($where) 
{ 
    $this->db->select('*'); 

    if (is_array($where)) 
    { 
     $this->db->where_in('field', $where); 
    } 
    else 
    { 
     $this->db->where('field', $where); 
    } 

    return $this->db->get('database'); 
} 
+0

原则上,好主意。但是我也将它作为数组传递给where函数。 我现在所做的是将数据作为加入的字符串传递给where_in函数,然后在函数中将其分解为数组..但是这样效率特别低。 –

+0

为什么不显示整个功能,随后会更容易提出建议。 – danneth