PHP报错:Call to undefined method userModel::create() 求解
问题解决:Fatal error: Call to undefined method userModel::create()
这个错误的直接原因是:你在控制器里调用了$this->userModel->create($user_data);,但你的userModel类中从未定义过create()方法。
解决方案:在userModel中添加create方法
打开你的userModel.php文件,在类中新增一个create()方法,用来处理用户数据的插入操作。推荐使用CodeIgniter的Active Record写法,比原生SQL更安全(自动处理SQL注入):
Class userModel extends CI_Model { public function __construct() { parent::__construct(); $this->table_name = 'Usersetup'; } // 新增create方法,处理用户数据插入 function create($user_data) { // 插入数据到指定数据表 $this->db->insert($this->table_name, $user_data); // 返回插入成功后的用户ID(可选,方便后续关联操作) return $this->db->insert_id(); } // 以下是你原有的其他方法,保持不变即可 function getUserData($id) { $this -> db -> select('*'); $this -> db -> from('Usersetup'); $this -> db -> where('Username', $id); $this -> db -> limit(1); $query = $this -> db -> get(); if($query -> num_rows() == 1) { $result = $query->result(); return $result[0]; } else { return false; } } function login($username, $pass) { $password = substr(md5(md5(strtolower($pass).'deApp').md5(strtolower($username))), 1,15); $this -> db -> select('*'); $this -> db -> from('usersetup'); $this -> db -> where('Username', $username); if($pass!='deApp') $this -> db -> where('Password', $password); $this -> db -> limit(1); $query = $this -> db -> get(); if($query == true && $query -> num_rows() == 1) { $this->updateUser(array('LastLogin' => date('Y-m-d H:i:s')), $username); return $query->result(); } else { return false; } } function getAll() { $this -> db -> select('*'); $this -> db -> from('usersetup'); $this -> db -> order_by("NPK", "asc"); $query = $this -> db -> get(); if($query -> num_rows() > 0) { return $query->result(); } else { return false; } } // 建议修改delData方法为Active Record写法,避免SQL注入风险 function delData($id) { $this->db->where('Username', $id); $this->db->delete('userprivilageweb'); $this->db->where('Username', $id); return $this->db->delete($this->table_name); } function updateUser($data, $userID) { $this->db->update($this->table_name, $data, array('Username' => $userID)); } }
额外提示
你原有的delData()方法使用原生SQL拼接,存在SQL注入风险,上面的代码已经帮你改成了Active Record的安全写法,建议保持这种写法规范。
内容的提问来源于stack exchange,提问作者Rizki Junianto
相关产品推荐
相关产品推荐

