You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CodeIgniter3中从浏览器获取数组参数用于数据库查询

实现从浏览器参数获取数组替换硬编码值

嘿,这个需求很容易搞定,咱们分几步来实现:

1. 修改Controller,获取并处理浏览器参数

首先用户可以通过GET请求把参数附在URL后面(比如 http://your-domain.com/header?nomor=000118,000112,000117),或者用POST请求提交。这里以GET为例,在Controller里拿到参数并转成数组:

class header extends CI_Controller{ 
    public function index(){ 
        // 获取浏览器传来的参数,比如URL里的?nomor=000118,000112,000117
        $nomor_list = $this->input->get('nomor');
        
        // 安全校验:如果参数不存在或为空,给个提示或者返回默认值
        if(empty($nomor_list)){
            echo "请传入NOMOR_DAFTAR参数";
            return;
        }
        
        // 把逗号分隔的字符串转成数组
        $array = explode(',', $nomor_list);
        
        // 加载Model并传递参数
        $this->load->model('header_model'); 
        $hasil = $this->header_model->getData($array); 
        var_dump($hasil); 
    } 
}

2. 修改Model,接收外部传入的数组

接下来调整Model的getData方法,让它接收Controller传过来的数组,替换原来的硬编码值:

class header_model extends CI_Model{ 
    // 新增参数$nomor_array,接收外部传入的数组
    public function getData($nomor_array){ 
        // 再加一层校验,确保传入的是有效数组
        if(!is_array($nomor_array) || empty($nomor_array)){
            return [];
        }
        
        $this->db->select('NOMOR_DAFTAR, TANGGAL_DAFTAR'); 
        $this->db->where_in('NOMOR_DAFTAR', $nomor_array); 
        return $this->db->get('tpb_header')->result_array(); 
    } 
}

3. 额外的安全小提示

  • 参数格式验证:可以用CodeIgniter的表单验证类,校验每个NOMOR_DAFTAR是否符合格式(比如固定长度、纯数字),避免非法值传入。
  • SQL注入防护:不用额外担心,CodeIgniter的where_in方法会自动对数组里的每个元素做转义处理,帮你规避SQL注入风险。
  • POST请求适配:如果是用表单POST提交参数,只需要把$this->input->get('nomor')换成$this->input->post('nomor')就行,逻辑完全一致。

这样就完成了从浏览器参数动态获取数组,替换原来的硬编码值啦~

内容的提问来源于stack exchange,提问作者yokana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:58:33