Codeigniter查询生成器在where_in中使用implode函数

时间:2016-11-08 12:49:52

标签: mysql sql codeigniter implode where-in

这是我使用implode函数的正常sql查询:

SELECT * from search_result WHERE skills IN ('".implode("','",$s_id)."');  

现在我想将其转换为codeigniter表单。我尝试了以下代码,但它失败了

$this->db->from('search_result');
$this->db->where_in('skills','".implode("','",$s_id)."');
$query = $this->db->get();  

这是我的$s_id数组:

Array ( [0] => 2D Design [1] => 3D Design [2] => 3D Modelling ) 

所以有人请帮我这样做。在此先感谢:)

2 个答案:

答案 0 :(得分:2)

官方文件说

$names = array('Frank', 'Todd', 'James'); # Data Array 
$this->db->where_in('username', $names); # passing array

尝试以下

方法01 推荐

$this->db->from('search_result');
$this->db->where_in('skills',$s_id);
$query = $this->db->get();

方法02

$this->db->from('search_result');
$this->db->where_in('skills',implode("','",$s_id));
$query = $this->db->get();

这一行出了什么问题

$this->db->where_in('skills','".implode("','",$s_id)."');

不要使用'"引号包装函数。然后它将作为STRING值保存到DB。

<强>链接

  1. where_in clause in codeigniter.com

答案 1 :(得分:1)

你可以这样写:

$this->db->from('search_result');
$this->db->where_in('skills', $s_id);
$query = $this->db->get();

Official doc

  

$ names = array(&#39; Frank&#39;,&#39; Todd&#39;,&#39; James&#39;);

     

$ this-&gt; db-&gt; where_in(&#39; username&#39;,$ names);

     

//生成:WHERE用户名IN(&#39; Frank&#39;,&#39; Todd&#39;,&#39; James&#39;)