【问题标题】:Mysql statement not working in CodeIgniter Model classMysql 语句在 CodeIgniter 模型类中不起作用
【发布时间】:2021-10-06 06:52:09
【问题描述】:

目前我正在尝试从我的数据中检索特定时间范围内的所有条目。为此,我在模型类中有一个方法,其中包含以下语句:

public function get_records_all($st_date,$end_date){
        $sql = SELECT
            *
            FROM `crm_listings`  
            WHERE added_date BETWEEN '" . $st_date . "' AND '".$end_date."'
            ORDER BY `added_date` DESC;
            $response = $this->db->query($sql);
            echo $response;
     }

在我的控制器类中,我使用以下语句来显示输出:

function fetch_status(){
            $startDate = '';
            $endDate = '';
            $this->load->model('crm/user_model');
  
            if($this->input->post('startDate')){
              $startDate = $this->input->post('startDate');
            }
            if($this->input->post('endDate')){
               $endDate = $this->input->post('endDate');
             }

             $data_all = $this->user_model->get_records_all($startDate,$endDate);
}

但这给了我以下错误:

【问题讨论】:

  • echo $response; 期望只回显一个字符串,您的响应不会是一个。我认为您想返回回复而不是return $response;
  • @NigelRen 好的,所以我将其更改为返回 $response 并在我的控制器类中添加了 echo $data_all,但我仍然遇到同样的错误
  • @JayModi 为什么 CI 有查询生成器时使用原始查询?
  • 为什么我们的SQL变量的内容没有引号?

标签: php mysql codeigniter


【解决方案1】:

试试这个

CodeIgniter 使您可以访问 Query Builder 类。这种模式 允许在您的数据库中检索、插入和更新信息 具有最少脚本的数据库。在某些情况下,只有一两行 代码是执行数据库操作所必需的。 CodeIgniter 可以 不要求每个数据库表都是它自己的类文件。它反而 提供更简化的界面。

public function get_records_all($st_date,$end_date){  
 $this->db->where('added_date >=', $st_date);
 $this->db->where('added_date <=', $end_date);
 $this->db->order_by('added_date', 'DESC');
 return $this->get('crm_listings')->result();
}

更多信息请使用此链接CI Query Builder CLass

【讨论】:

【解决方案2】:

如果你坚持使用db-&gt;query 将你的get_records_all() 响应更改为return $response;,那么你可以使用$data_all 作为和对象这样

foreach($data_all as $data) {
  echo $data->some_field;
}

【讨论】:

    【解决方案3】:

    您忘记在$this-&gt;db-&gt;query($sql) 之后添加-&gt;result() 喜欢:

    $response = $this->db->query($sql)->result();
    

    但是你也可以使用查询生成器

    public function get_records_all($st_date,$end_date){
    
         return $this->db->where('added_date >=', $st_date)
                 ->where('added_date <=', $end_date);
                 ->order_by('added_date', 'DESC');
                 ->get('crm_listings')
                 ->result();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-01
      • 2016-01-17
      • 2016-05-31
      • 2018-09-25
      • 1970-01-01
      • 2020-05-14
      • 2013-05-03
      相关资源
      最近更新 更多