PHP在codeiginter

时间:2017-12-08 08:27:19

标签: php codeigniter codeigniter-3

我在模型中创建了一个方法来从数据库中获取数据,然后使用不同的方法参数($ param)值在控制器中多次调用它。这仅适用于一个首先出现的参数值。我知道我这样做的方式不对,但我无法找到解决方案。请帮忙。

实际上,我正在尝试根据类型(' wordpress',' magento'' shopify')来构建数据库

My_model.php

class My_model extends CI_Model{

  public function fun_name($param){
       return $this->db->get_where('categories', array('type' => '$param'));
  }

}

My_controller.php

class My_controller extends CI_Controller{
   public function get_data(){
       $this->load->model('my_model');
       $data = array(
           'first'   =>   $this->my_model->fun_name('wordpress'),
           'second'  =>   $this->my_model->fun_name('magento'),
           'third'   =>   $this->my_model->fun_name('shopify')
        );
       $this->load->view('index', $data);
   }
}

4 个答案:

答案 0 :(得分:1)

如果这是您的实际代码,

class My_model extends CI_Model{
  public function fun_name($param){
    if($param = one){
       return $this->db->get_where('table', array('id' => '$param'));
    }
  }
}

然后问题出现在下面这一行 -

    if($param = one){

将其更改为

    if($param == 'one'){

并在此

return $this->db->get_where('table', array('id' => '$param'));

将其更改为下面的这一行,因为您不需要围绕变量

的引号
return $this->db->get_where('table', array('id' => $param));

显然,您的代码可以更好地进行优化,即您可能不需要 - 否则就像您正在做的那样但又不知道完整的情况,推荐解决方案并不容易。

答案 1 :(得分:1)

如果您想使用一个查询从同一个表中选择不同的ID,那么您可以执行以下操作:

型号:

class My_model extends CI_Model{

  public function fun_name($params){
    $this->db->where_in('id', $params);
    return $this->db->get('table');
  }
}

控制器:

class My_controller extends CI_Controller{
   public function get_data(){
       $this->load->model('my_model');
       $params = array('first', 'sec', 'third');
       $data['values'] = $this->my_model->fun_name($params);

       $this->load->view('index', $data);
   }
}

您还可以查看Codeigniter文档: https://www.codeigniter.com/user_guide/database/query_builder.html#selecting-data

答案 2 :(得分:1)

如何改变

if($param = 'one'){

if($param == 'one'){

答案 3 :(得分:1)

你能试试吗?

你的控制器

's'(115)

模型

class My_controller extends CI_Controller{
   public function get_data(){
       $this->load->model('my_model');
       $data['data'] = array(
           'first'   =>   $this->my_model->fun_name('param1'),
           'second'  =>   $this->my_model->fun_name('param2'),
           'third'   =>   $this->my_model->fun_name('param3')
        );
       $this->load->view('index', $data);
   }
}

视图

class My_model extends CI_Model{

  public function fun_name($param){
       return $this->db->get_where('categories', array('type' => $param))->row()->category_name;
  }

}