代码点火器中的会话数据



我有一个简单的程序来管理文档的数据。文档具有branch_idsubject_id
有些文件有:
a)只有branch_idsubject_idnull
b) 只有subject_idbranch_idnull
c)branch_idsubject_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 条件)是否是您实际想要运行的查询?

相关内容

  • 没有找到相关文章

最新更新