CodeIgniter框架搜索框提交后返回空白无数据问题求助
CodeIgniter搜索功能无返回问题解决方案
核心错误点与修复方案
1. 控制器视图加载逻辑缺陷
你当前将视图加载代码放在isset($_POST['submittrack'])的判断分支内,只要该判断不成立,页面不会加载任何视图,也不会传递$slt参数,表现为空白无返回。
同时直接使用原生$_POST判断不符合CodeIgniter的开发规范,容易出现参数获取异常,修改后控制器代码如下:
function searchtrack() { $this->load->model('excel_import_model'); // 提前初始化查询结果,避免视图出现变量未定义报错 $data['slt'] = []; // 使用CI原生输入类判断提交状态,兼容性更强 if($this->input->post('submittrack')) { // 提前去除参数前后空格,避免隐形字符导致匹配失败 $awb = trim($this->input->post('awb')); $data['slt']= $this->excel_import_model->searchtrack($awb); } // 将视图加载移到判断外,无论是否提交都正常渲染页面 $this->load->view("searchtrack",$data); }
2. 视图无空结果兼容逻辑
原视图代码仅对查询结果做遍历,若没有匹配数据$slt为空数组,foreach不会输出任何内容,无法区分是逻辑错误还是无匹配数据,修改后视图代码如下:
<?php if(!empty($slt)){ foreach($slt as $val){ echo $val->id; } }else{ echo "未查询到匹配的运单数据"; } ?>
3. 数据库查询匹配隐形问题
若修改后仍然提示无匹配数据,可在模型中打印执行的SQL语句确认查询逻辑是否正确,修改模型代码:
public function searchtrack($awbno) { $this->db->select('*'); // 对数据库字段和传入参数都做去空格处理,避免隐形空格导致匹配失败 $this->db->where("TRIM(awb)", trim($awbno)); $this->db->from('consignments'); $query = $this->db->get(); // 调试用:打印最后执行的SQL,复制到数据库直接执行可确认是否有匹配结果 // echo $this->db->last_query();exit; $result = $query->result(); return $result; }
内容的提问来源于stack exchange,提问作者qas da
相关产品推荐
相关产品推荐

