我有一个简单的程序,用于管理文档的数据。文档具有branch_id
和subject_id
。
一些文件有:
a)仅branch_id
和subject_id
是null
。
b)仅subject_id
和branch_id
是null
。
c)branch_id
和subject_id
。
我需要按照上述标准将所有文件分开。在我的项目中,我使用以下代码完成了此任务
if ($this->session->userdata('branch_id'))
$this->db->where('tbl_documents.branch_id', $this->session->userdata('branch_id'));
if ($this->session->userdata('subject_id'))
$this->db->where('tbl_documents.subject_id', $this->session->userdata('subject_id'));
我如何修改上面的代码来满足上述条件c)。谁能帮我?
答案 0 :(得分:0)
尝试关联数组方法
if (($this->session->userdata('branch_id')) && ($this->session->userdata('subject_id')))
{
$where = array(
'branch_id' => $this->session->userdata('branch_id'),
'subject_id' => $this->session->userdata('subject_id')
);
}
else if($this->session->userdata('branch_id'))
{
$where = array('branch_id' => $this->session->userdata('branch_id'));
}
else if($this->session->userdata('subject_id'))
{
$where = array('subject_id' => $this->session->userdata('subject_id'));
}
else
{
$where = array('1' => '1'); //You probably don't need this case.
}
$this->db->where($where);
$this->db->get('tbl_documents');
答案 1 :(得分:0)
我不认为您需要做任何事情。
假设您要查询tbl_documents
中的所有字段,因此“基准”查询语句为
SELECT * FROM tbl_documents
除非if
之一或全部为真,否则不会改变。
如果第一个为true,则查询语句变为
SELECT * FROM tbl_documents WHERE tbl_documents.branch_id = some_branch_id;
但是,如果第一个为false,第二个为true,则该语句为
SELECT * FROM tbl_documents WHERE tbl_documents.subject_id = some_subject_id;
如果两个if
条件都成立,则查询语句将为
SELECT * FROM tbl_documents WHERE tbl_documents.branch_id = some_branch_id
AND tbl_documents.subject_id = some_subject_id;
不满足标准“ c”吗?
我的问题是,如果两个条件都为假,该怎么办? SELECT * FROM tbl_documents
(没有WHERE条件)是您实际上要运行的查询吗?