在CI中的sql中使where子句动态化

时间:2016-09-07 06:20:53

标签: php mysql sql database codeigniter

我想动态显示页面内容以下代码工作正常但它只显示特定id的内容...我怎样才能使其动态化?

模型

public function getAllDepartment() {
$join = $this->db->query( "Select * from labreport_db inner join patient_db on labreport_db.P_ID=patient_db.id  where labreport_db.P_ID=15");
return $join->result_array();

    }

控制器

public function reportDisplay(){

 $data['clubs'] = $this->labdoc_model->getAllDepartment();
 $this->load->view('SystemAdminUser/labreport', $data);
    }

4 个答案:

答案 0 :(得分:1)

将id保存在某个变量中:

$pid = $_REQUEST['p_id'];   
// $_REQUEST['p_id'] will contain the dynamic value in it

并将此变量放在您的查询中:

where labreport_db.P_ID = $pid;

它将显示$ pid中包含的值的数据,并确保其中包含动态值。

答案 1 :(得分:1)

使用查询生成器类CI可以解决这个问题。

这就是你的代码的样子,

$id=15;
$this->db->select('*');
$this->db->from('labreport_db');
$this->db->join('patient_db', 'labreport_db.P_ID = patient_db.id');
$this->db->where('labreport_db.P_ID', $id);
$query = $this->db->get();

这是CI中使用查询构建器类进行数据库操作的标准方法,您可以在其中执行动态WHERE条件。

只需更改$id的值,查询就可以完成。

参考:https://www.codeigniter.com/userguide3/database/query_builder.html#selecting-data

答案 2 :(得分:1)

您可以使用此代码进行解决。

<强> Model.php

public function getAllDepartment($pId) {
    $join = $this->db->query( "Select * from labreport_db inner join     patient_db on labreport_db.P_ID=patient_db.id  where   labreport_db.P_ID=".$pId);
    return $join->result_array();
}

<强> Controller.php这样

public function reportDisplay(){
     $pid = $_REQUEST['pid']; //OR  $_GET['pid']; OR  $_POST['pid']; You can pass your id for get content
     $data['clubs'] = $this->labdoc_model->getAllDepartment($pid);
     $this->load->view('SystemAdminUser/labreport', $data);
}

答案 3 :(得分:0)

有几种方法可以做到这一点。其中之一是通过CI路由能力。

<强>模型

public function getAllDepartment($p_id = 0) {
    $join = $this->db->query( "Select * from labreport_db inner join patient_db on labreport_db.P_ID=patient_db.id  where labreport_db.P_ID={$p_id}");
    return $join->result_array();
}

评论:我添加了$p_id作为变量来动态获取ID。

<强>控制器

public function reportDisplay($p_id = 0){
    $data['clubs'] = $this->labdoc_model->getAllDepartment($p_id);
    $this->load->view('SystemAdminUser/labreport', $data);
}

评论:我们还在$p_id函数中添加了一个名为reportDisplay的变量,并将其传递给模型的getAllDepartment()函数。

如何动态获取报告

我不知道您的网址结构,但出于示例目的,我们可以说http://localhost/yourcontrollername/reportDisplay/

要动态访问它,只需在reportDisplay

之后添加ID即可

例如: