Codeigniter中的会话数据

时间:2018-12-17 16:30:26

标签: php codeigniter

我有一个简单的程序,用于管理文档的数据。文档具有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)。谁能帮我?

2 个答案:

答案 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条件)是您实际上要运行的查询吗?