我使用Codeigniter 2。我正试图使用活动记录进行mysql查询。问题是,当数组传递给where_in为空时,我得到了错误。我问的是如果数组为空,是否有办法忽略where_in
条件
这是条件示例:
$this->db->where_in('p.brand_id', $brands);
我得到的错误是:
你的SQL语法有错误;检查与MySQL服务器版本对应的手册,以获得使用near ') AND
p
的正确语法。brand_id
IN ()
如果数组为空,则不要调用where_in()
。
if(is_array($brands) && count($brands) > 0){
$this->db->where_in('p.brand_id', $brands);
}
我在活动记录(DB_active_rec.php
类)中更改,并且我添加了此代码以忽略where_in
条件,如果值数组为空。所以现在对我来说是可行的。我添加的代码位于//@begin和//@end
/**
* Where_in
*
* Called by where_in, where_in_or, where_not_in, where_not_in_or
*
* @param string The field to search
* @param array The values searched on
* @param boolean If the statement would be IN or NOT IN
* @param string
* @return object
*/
protected function _where_in($key = NULL, $values = NULL, $not = FALSE, $type = 'AND ')
{
if ($key === NULL OR $values === NULL)
{
return;
}
//@begin
// Ignore where_in condition if values array's empty
if(is_array($values) && empty($values))
{
return $this;
}
//@end
// More method stuff