&引用;何处或;在Codeigniter PHP中加载数据范围内的数据

&引用;何处或;在Codeigniter PHP中加载数据范围内的数据,php,mysql,sql-server,database,codeigniter,Php,Mysql,Sql Server,Database,Codeigniter,我试图在codeigniter中的一系列数据之间加载数据。 我无法正确地理解where语句。我要查询的语句是: 1-如果“inv_firstdate”介于$from和$to 2-或者如果inv_seconddate介于$from和$to 我在代码中尝试了这个查询, 我需要你的帮助,有什么想法吗 $from = "20150309"; $to = "2015410"; $query = $this->db->select('*'); $query = $this->db-&

我试图在codeigniter中的一系列数据之间加载数据。 我无法正确地理解where语句。我要查询的语句是:

1-如果
“inv_firstdate”
介于
$from
$to

2-或者如果
inv_seconddate
介于
$from
$to

我在代码中尝试了这个查询, 我需要你的帮助,有什么想法吗

$from = "20150309"; 
$to = "2015410"; 

$query = $this->db->select('*');
$query = $this->db->from('inv');
$query = $this->db->join('users', 'users.hu_id = inv.usr_id');
$query = $this->db->order_by('inv_id', 'desc');

$query = $this->db->where('hu_sponsor', $id);
$query = $this->db->where('pln_duration', 30);
$query = $this->db->where('inv_status', 1);

$query =  $this->db->where('inv_firstdate >=', $from);
$query =  $this->db->where('inv_firstdate <=', $to);
$query =  $this->db->or_where('inv_seconddate >=', $to);
$query =  $this->db->or_where('inv_seconddate <=', $from);
$from=“20150309”;
$to=“2015410”;
$query=$this->db->select('*');
$query=$this->db->from('inv');
$query=$this->db->join('users','users.hu_id=inv.usr_id');
$query=$this->db->order_by('inv_id','desc');
$query=$this->db->where('hu_赞助商',$id);
$query=$this->db->where('pln_duration',30);
$query=$this->db->where('inv_status',1);
$query=$this->db->where('inv_firstdate>=',$from);
$query=$this->db->where('inv_firstdate=',$to);
$query=$this->db->or_where('inv_seconddate您可以这样做:

$query =  $this->db->where('((inv_firstdate >= ', $from, FALSE);
$query =  $this->db->where('inv_firstdate <= ' . $to . ')', NULL, FALSE);
$query =  $this->db->or_where('(inv_seconddate >= ', $to, FALSE);
$query =  $this->db->where('inv_seconddate <= '. $from . '))', NULL, FALSE);
$query=$this->db->where('(inv_firstdate>=',$from,FALSE);
$query=$this->db->where('inv_firstdate=',$to,FALSE);

$query=$this->db->where('inv_seconddate='.$from.'AND inv_firstdate='.$to.'AND inv_seconddate您不能同时执行
where
或\u where
条件。
或\u where
只能在需要或查询的地方使用。您可以使用它来解决您的问题

    $this->db->select('*');
    $this->db->from('inv');
    $this->db->join('users', 'users.hu_id = inv.usr_id');
    $this->db->order_by('inv_id', 'desc');

    $this->db->where('hu_sponsor', $id);
    $this->db->where('pln_duration', 30);
    $this->db->where('inv_status', 1);

    $this->db->where('((inv_firstdate >='. $from.' AND inv_firstdate <= '.$to.') OR (inv_seconddate <='. $to.' AND inv_seconddate >= '.$from.'))');
    $results=$this->db->get()->result();
$this->db->select('*');
$this->db->from('inv');
$this->db->join('users','users.hu_id=inv.usr_id');
$this->db->order_by('inv_id','desc');
$this->db->where('hu_赞助商',$id);
$this->db->where('pln_duration',30);
$this->db->where('inv_status',1);

$this->db->where(“((inv_firstdate>=”.$from.”和inv_firstdate不确定数据库中的日期格式,但根据我的经验,无论何时查询变得复杂,您最终使用ci active record编写的代码比使用纯SQL编写的代码要多,因此无法解决问题。只需使用
$this->db->query(“”)
以老式的方式构建各种条件。您可以节省大约60%的行数,这将更具可读性,并且实际可以工作。关于日期格式,请将字符串包装在mysql
TIMESTAMP()中
以确保它们被正确解析。

感谢您的回复,但是,synax是正确的,但它不会执行OR\u WHERE。为什么要将每一行分配给$query?您对此有何建议?非常感谢。这太有帮助了。
    $this->db->select('*');
    $this->db->from('inv');
    $this->db->join('users', 'users.hu_id = inv.usr_id');
    $this->db->order_by('inv_id', 'desc');

    $this->db->where('hu_sponsor', $id);
    $this->db->where('pln_duration', 30);
    $this->db->where('inv_status', 1);

    $this->db->where('((inv_firstdate >='. $from.' AND inv_firstdate <= '.$to.') OR (inv_seconddate <='. $to.' AND inv_seconddate >= '.$from.'))');
    $results=$this->db->get()->result();