如何在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
相关产品推荐
相关产品推荐

