Mysql 其中,如果数组为空,则编码点火器错误中的_
我用的是CodeIgniter2。我正在尝试使用活动记录进行mysql查询。问题是,当传递到中的\u为空的数组时,我出现了错误。我在问,如果数组为空,是否有任何方法可以忽略Mysql 其中,如果数组为空,则编码点火器错误中的_,mysql,activerecord,codeigniter-2,Mysql,Activerecord,Codeigniter 2,我用的是CodeIgniter2。我正在尝试使用活动记录进行mysql查询。问题是,当传递到中的\u为空的数组时,我出现了错误。我在问,如果数组为空,是否有任何方法可以忽略where_in条件 这是一个条件示例: $this->db->where_in('p.brand_id', $brands); 这就是我得到的错误: 您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解在()中使用的正确语法(near')和pbrand\u id) 如果数组为空,就不要调用whe
where_in
条件
这是一个条件示例:
$this->db->where_in('p.brand_id', $brands);
这就是我得到的错误:
您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解在()中使用的正确语法(near')和p
brand\u id
)
如果数组为空,就不要调用
where_in()
if(is_array($brands) && count($brands) > 0){
$this->db->where_in('p.brand_id', $brands);
}
我更改了活动记录(
DB\u Active\u rec.php
class),并添加了此代码以忽略where\u 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
不要害怕,只要拿出你的疑问dude@echo_Me例如他是<代码>$this->db->where_in('p.brand_id',$brands)正在将
中的追加到查询中。问题很清楚。你确定$brands是一个数组吗?如果不是,它将失败。。。检查这个@RocketHazmat问题就在那行之前。这就是为什么我让他展示code@echo_Me这是一个包含多连接的大型查询
,因此,我向您展示我想要的@我百分之百肯定。