调用未定义方法、数据库错误:求排查CI控制器第13行代码问题
问题排查:调用未定义方法及数据库错误分析
看起来你遇到了两个关联的问题,咱们一步步拆解:
先把你的代码贴出来方便分析:
控制器代码
function __construct() { parent::__construct(); $this->load->helper('url'); $this->load->model('model_databis'); //line13 } function index(){ $data=array('data' => $this->model_databis->bus()); $this->load->view('admin/databis',$data); }
模型代码
class Model_databis extends CI_Model{ function __construct(){ parent::__construct(); } function dbis(){ $query = $this->db->get('bus'); return $query->result_array(); } function tambah($data){ $this->db->insert('bus', $data); return TRUE; } }
问题原因分析
核心错误:方法名不匹配
你在控制器的index方法里调用了$this->model_databis->bus(),但你的Model_databis模型里根本没有定义bus()方法,只有一个名为dbis()的方法——这就是「调用未定义方法」错误的直接原因。系统提示第13行可能是因为错误追踪到模型加载的位置,但实际问题出在后续的方法调用环节。数据库错误的关联影响
因为方法调用失败,后续本应执行的数据库查询$this->db->get('bus')根本没机会运行;同时如果你的CI数据库配置(application/config/database.php)存在参数错误(比如主机地址、用户名、密码或数据库名配置不对),也会触发数据库相关报错,但当前首要解决的是方法名不匹配的问题。
解决方案
你有两种选择来修复这个问题:
- 修改控制器的调用代码:把
$data=array('data' => $this->model_databis->bus());改成$data=array('data' => $this->model_databis->dbis()); - 修改模型的方法名:把模型里的
function dbis()改成function bus(),保持调用和定义的方法名一致
另外,建议你检查application/config/database.php中的数据库配置项,确保连接参数正确,避免后续出现数据库连接失败的问题。
内容的提问来源于stack exchange,提问作者Me Myself
相关产品推荐
相关产品推荐

