如果数组为空,则where_in codeigniter错误

时间:2014-03-12 15:33:12

标签: mysql activerecord codeigniter-2

我正在使用Codeigniter 2.我正在尝试使用Active Record进行mysql查询。问题是当数组传递给where_in为空时我得到了错误。我问如果数组为空,是否有任何方法可以忽略where_in条件

这个条件示例:

$this->db->where_in('p.brand_id', $brands);

这就是我得到的错误:

  

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在')和p附近使用正确的语法。brand_id IN()

2 个答案:

答案 0 :(得分:1)

如果数组为空,请不要调用where_in()

if(is_array($brands) && count($brands) > 0){
    $this->db->where_in('p.brand_id', $brands);
}

答案 1 :(得分:0)

我在Active Record(DB_active_rec.php类)中进行了更改,如果values数组为空,我将此代码添加到Ignore 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