获取inventory_update_stock_id时出现偏移错误,请求技术排查
问题分析与解决方法
核心问题
你将inventory_update_stock_id放在了表单的action URL路径参数中,但控制器却尝试用$this->input->post()从POST请求体中获取,两者方式不匹配,导致无法正确获取ID,进而引发跳转错误。
两种解决方式
方式1:从URL分段参数中获取ID(适配现有表单action写法)
因为你在action中通过URL分段传递了ID(more/addMore/'.$row->inventory_update_stock_id),控制器需要通过URI工具类来读取该参数:
// CodeIgniter 3 写法 $inventory_update_stock_id = $this->uri->segment(3); // CodeIgniter 4 写法(推荐用路由占位符更规范) $inventory_update_stock_id = $this->request->getUri()->getSegment(3);
方式2:添加隐藏表单字段用POST传递ID(适配现有控制器写法)
保持控制器的$this->input->post()代码不变,在表单内部添加一个隐藏输入框,将ID放入POST请求体中:
<form action="<?= base_url('more/addMore') ?>" id="addMoreDetails" class="form-horizontal" method="post"> <!-- 新增隐藏字段传递ID --> <input type="hidden" name="inventory_update_stock_id" value="<?= $row->inventory_update_stock_id ?>"> <!-- 其他表单内容 --> </form>
额外注意事项
- 若使用URL分段方式,需确保路由规则正确,避免参数被错误解析
- 无论哪种方式,都要对获取到的ID做合法性校验(比如判断是否为有效数字、是否对应数据库中存在的记录),防止恶意请求
内容的提问来源于stack exchange,提问作者MCIT Trends
相关产品推荐
相关产品推荐

