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

CodeIgniter中如何按名称而非ID进行数据查询?

解决方案:将CodeIgniter按ID查询改为按名称查询

嘿,作为CodeIgniter新手,把按ID查询改成按名称查询其实挺简单的,咱们分模块调整代码就行,另外我还会指出你原来代码里的一个小问题哦~

1. 调整控制器代码

首先要把控制器的参数从$id改成对应的名称参数(比如$mobile_name),同时把方法名改得更语义化,方便后续维护:

public function selectbyname($mobile_name){ 
    $this->load->database(); 
    $this->load->model('aboutmodel'); 
    // 调用模型的按名称查询方法
    $data['h'] = $this->aboutmodel->selectbyname($mobile_name); 
    $this->load->view('aboutpageview', $data); 
}

小贴士:如果你不想改方法名,也可以保留selectquery,只要把参数和内部逻辑对应上就好,但语义化的命名会让代码更容易懂。

2. 修改模型代码

这里要做两个关键调整:

  • 把查询条件从id改成mobile_name,匹配传入的名称参数
  • 必须把返回值改成$query->row_array()(你原来的代码注释掉了这个,直接返回$query的话,视图里无法直接用$h['mobile_name']这种数组方式取值,会报错)

修改后的模型代码:

public function selectbyname($mobile_name){ 
    // 替换查询条件为mobile_name字段
    $query = $this->db->get_where('phone_mobileinfos', array('mobile_name' => $mobile_name)); 
    // 返回单行数据的数组格式,供视图直接取值
    return $query->row_array(); 
}

补充:如果你的phone_mobileinfos表中mobile_name字段可能有重复值,那应该用result_array()返回多行数据,然后在视图里用循环遍历展示;如果是唯一名称,用row_array()就足够了。

3. 视图代码(无需修改)

你的视图代码可以完全保持不变,因为我们还是把查询结果存在$data['h']里,视图依然能通过$h['mobile_name']和$h['price']正常取值:

<p>Mobile_name:<?php echo $h['mobile_name'];?></p> 
<p>Price:<?php echo $h['price'];?></p>

额外注意事项

  • 路由配置:如果你的路由有自定义规则,要把原来匹配ID的规则(比如selectquery/(:num))改成匹配名称的规则selectbyname/(:any),这样才能正确接收包含字母、空格等字符的名称参数。
  • 安全问题:不用担心SQL注入,CodeIgniter的get_where()方法会自动帮你转义参数,这点很省心~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:24:22