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

Codeigniter出现Required parameter follows optional parameter错误如何解决

问题原因

  • 该错误是PHP 8.0及以上版本的语法约束导致的:PHP规定必选参数不能声明在可选参数之后,你当前的方法定义里,$where = array() 是带默认值的可选参数,后面的$order没有默认值属于必选参数,不符合语法要求。
  • 低版本PHP(7.x及以下)仅会对该写法抛出警告,高版本PHP会直接抛出致命错误终止运行。

修复方案

两种方案可根据业务场景二选一:

方案1:给必选参数加默认值,适配原有调用逻辑

如果现有业务中存在大量仅传前2个参数、不需要排序的调用场景,选该方案无需改动现有调用代码:

public function get_all($tableName,$where = array(),$order = '')
{
    $this->db->where($where);
    if (!empty($order)) {
        $this->db->order_by($order);
    }
    return $this->db->get($tableName)->result();
}

方案2:调整参数顺序,把必选参数移到可选参数前

如果所有调用场景都必须传入排序规则,选该方案可以强制约束调用规范:

public function get_all($tableName, $order, $where = array())
{
    return $this->db->where($where)->order_by($order)->get($tableName)->result();
}

注意:使用该方案需要同步修改所有调用get_all方法的代码,调整参数传入顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:57:03