我有一个简单的程序来管理文档的数据。文档具有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)。谁能帮我?
尝试关联数组方法
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');
我不相信你需要做任何事情。
假设您正在请求tbl_documents
中的所有字段,因此"基线"查询语句是
SELECT * FROM tbl_documents
除非if
陈述中的一个或两个都是正确的,否则这种情况不会改变。
如果第一个为 true,则查询语句变为
SELECT * FROM tbl_documents WHERE tbl_documents.branch_id = some_branch_id;
但是,如果第一个是假的,第二个是真的,那么该语句将是
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 条件)是否是您实际想要运行的查询?