Where_in编码器错误,如果数组为空



我使用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

相关内容

  • 没有找到相关文章

最新更新