CodeIgniter如何将模型查询结果集返回给调用端并解决查询报错
问题原因及修复方案
1. 核心语法错误
原模型方法中SQL语句的引号嵌套逻辑混乱,单双引号未正确闭合,导致PHP解析语法失败,是直接触发报错的原因。
2. 查询结果处理错误
CodeIgniter 中$this->db->query()执行后返回的是CI_DB_result查询对象,不能直接用echo输出,且原方法没有写return返回值,控制器无法拿到查询到的数据。
3. 安全风险
直接拼接用户传入的参数到SQL语句中,存在SQL注入漏洞,需使用框架提供的查询绑定功能规避风险。
修复后代码
模型方法
public function get_records_all($st_date,$end_date) { $sql = 'SELECT * FROM `crm_listings` WHERE added_date BETWEEN ? AND ? ORDER BY `added_date` DESC'; // 用查询绑定自动处理参数转义和引号 $query = $this->db->query($sql, [$st_date, $end_date]); // 返回数组格式的查询结果 return $query->result_array(); }
控制器补充(可选)
如果需要查看输出结果,可在控制器中补充打印逻辑:
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); // 输出结果示例 print_r($data_all); }
内容的提问来源于stack exchange,提问作者Jay Modi
相关产品推荐
相关产品推荐

