我正在使用Codeigniter 2.我正在尝试使用Active Record进行mysql查询。问题是当数组传递给where_in为空时我得到了错误。我问如果数组为空,是否有任何方法可以忽略where_in
条件
这个条件示例:
$this->db->where_in('p.brand_id', $brands);
这就是我得到的错误:
您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在')和
p
附近使用正确的语法。brand_id
IN()
答案 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