CodeIgniter Active Record Where Not In String

2019-02-21 14:54发布

问题:

I'm having an issue with CI Active Record's "Where Not In". I am trying to exclude a series of ID's. I couldn't understand why everything worked fine and dandy with one record, but not with multiple.

My Query

$this->db->where_not_in('crm.user_id', $ignore);

The problem is when I profile the the Query is wrong.

With a string of ID's

// $ignore = "12,13";    
SELECT *
FROM (`crm`)
WHERE `crm`.`user_id` NOT IN ('16,13') 
AND `survey` =  1 

With a string of Quotes ID's

// $ignore = "'12','13'";
SELECT *
FROM (`crm`)
WHERE `crm`.`user_id` NOT IN ('\'16\',\'13\'') 
AND `survey` =  1 

Am I forced to do a loop of "or_where_not_in" or something like that?

回答1:

where_in and where_not_in expect you to pass an array, not a string as the 2nd parameter.

$ignore = array(12, 13);

$this->db->where_not_in('crm.user_id', $ignore);

Link to the docs: http://www.codeigniter.com/userguide2/database/active_record.html



标签: codeigniter