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

CodeIgniter中URL显示%201异常 如何输出指定ID对应数据行

CodeIgniter CRUD功能开发问题修复方案

问题1:编辑链接URL末尾显示%201而非数字ID

问题原因

%20是URL中空格字符的编码结果,异常来自视图层链接拼接的书写错误:原代码中site_url()输出的控制器路径后,斜杠与ID输出标签之间多输入了一个空格,该空格被URL转义后就出现了%201的异常效果。

修复方案

修正视图层的链接拼接逻辑,删除多余空格,推荐直接把ID参数作为路径一部分传入site_url()函数,避免PHP标签外拼接引入多余字符,修复后的视图代码如下:

<td><a href="<?php echo site_url('CrudController/edit/'.$row->id); ?>">Edit</a> | Delete </td>

注意:$row->id中对象操作符->两侧不要加多余空格,遵循PHP书写规范。


问题2:查询并输出指定ID的数据行

你当前的控制器edit方法未接收URL传递的ID参数,也没有实现数据查询逻辑,按以下逻辑修改即可:

  • 为控制器方法添加路由参数,用于接收URL传入的ID值,增加合法性校验避免非法访问
  • 加载对应数据表的操作模型,编写查询方法按ID匹配数据行
  • 将查询结果传递到编辑视图供调用输出

控制器修改示例

public function edit($id = NULL) {
    // ID合法性校验
    if ($id === NULL || !is_numeric($id)) {
        show_404();
    }
    // 加载数据模型,模型名替换为你项目中实际的模型名称
    $this->load->model('Crud_model');
    // 调用模型方法查询指定ID的数据
    $data['row'] = $this->Crud_model->get_record_by_id($id);
    // 校验查询结果,不存在对应数据则抛出404
    if (empty($data['row'])) {
        show_404();
    }
    // 传递数据到编辑视图
    $this->load->view('crudEdit', $data);
}

模型层查询方法示例(对应添加到Crud_model中)

public function get_record_by_id($id) {
    // 将your_table替换为你项目中实际的数据表名
    return $this->db->where('id', $id)->get('your_table')->row();
}

修改完成后,在crudEdit视图文件中可以直接通过$row变量访问该ID对应的数据行,输出字段示例:echo $row->字段名;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:21:38