我很遗憾地问这个愚蠢的问题,但我对这个问题感到有点困惑。
$this->db->select('user_package.status,user_package.remaining,user_package.date,package.pname,package.pcount');
$this->db->join('user_package','user_package.pid=package.pid','left');
$this->db->where('user_package.status','Active');
$this->db->or_where('user_package.status','Pending');
$this->db->where('user_package.uid',$rows->uid);
$user_package=$this->db->get('package');
这里是mysql面板中的类似查询,我运行结果检查输出
Select up.status,up.remaining,up.date,p.pname,up.uid,p.pcount FROM user_package up LEFT JOIN package p ON up.pid=p.pid where up.status="Active" OR up.status="Pending" AND up.uid=7
,这是查询的输出
我想要的是只查找uid为7的行并检查其状态是Pending还是Active。但输出是不同的。它用7和8 uid取出Pending和Active记录。
答案 0 :(得分:0)
而不是使用$ this-> db->其中尝试使用$ this-> db-> where_in
这应该仅将结果限制为您需要的ID。
e.g。
$this->db->select('user_package.status,user_package.remaining,user_package.date,package.pname,package.pcount');
$this->db->join('user_package','user_package.pid=package.pid','left');
$this->db->where('user_package.status','Active');
$this->db->or_where('user_package.status','Pending');
$this->db->where_in('user_package.uid',$rows->uid);
$user_package=$this->db->get('package');
答案 1 :(得分:0)
你必须这样做
$select = array(
'up.status',
'up.remaining',
'up.date',
'p.pname',
'up.uid',
'p.pcount'
);
$status = array('Active','Pending');
$this->db
->select($select)
->from('user_package up')
->join('package p','up.pid = p.pid','left')
->where_in('up.status',$status)
->where('up.uid',$rows->uid)
->get();