[英]Fatal error: Uncaught Error: Call to undefined function query() in C:\xampp\htdocs\phpmvc\app\models\Mahasiswa_model.php:31
I'm trying to make an mvc framework like ci, but I have a problem with this error.我正在尝试制作一个像 ci 这样的 mvc 框架,但是我遇到了这个错误的问题。 the error "Call to undefined function query()" but it's weird since query()
works fine in method getMahasiswaById()
.错误“调用未定义的函数 query()”,但这很奇怪,因为query()
在方法getMahasiswaById()
工作正常。
Fatal error: Uncaught Error: Call to undefined function query() in C:\\xampp\\htdocs\\phpmvc\\app\\models\\Mahasiswa_model.php:31 Stack trace: #0 C:\\xampp\\htdocs\\phpmvc\\app\\controllers\\Mahasiswa.php(27): Mahasiswa_model->tambahMahasiswa(Array) #1 C:\\xampp\\htdocs\\phpmvc\\app\\core\\App.php(35): Mahasiswa->tambah() #2 C:\\xampp\\htdocs\\phpmvc\\public\\index.php(5): App->__construct() #3 {main} thrown in C:\\xampp\\htdocs\\phpmvc\\app\\models\\Mahasiswa_model.php on line 31
This my model:这是我的模型:
class Mahasiswa_model {
private $table = 'mahasiswa';
private $db;
public function __construct()
{
$this->db = new Database;
}
public function getMahasiswa()
{
$this->db->query('SELECT * FROM '.$this->table);
return $this->db->resultSet();
}
public function getMahasiswaById($id)
{
$this->db->query('SELECT * FROM '.$this->table.' WHERE id=:id');
$this->db->bind('id', $id);
return $this->db->single();
}
public function tambahMahasiswa($data)
{
$query = "INSERT INTO mahasiswa
VALUES ('', :nama, :nim, :email, :jurusan)";
$this->db-query($query);
$this->db->bind('nama', $data['nama']);
$this->db->bind('nim', $data['nim']);
$this->db->bind('email', $data['email']);
$this->db->bind('jurusan', $data['jurusan']);
$this->db->execute();
return $this->db->rowCount();
}
}
This my controller:这是我的控制器:
<?php
class Mahasiswa extends Controller {
public function index()
{
$data['title'] = 'List Mahasiswa';
$data['mhs'] = $this->model('Mahasiswa_model')->getMahasiswa();
$this->view('templates/header', $data);
$this->view('mahasiswa/index', $data);
$this->view('templates/footer');
}
public function detail($id)
{
$data['title'] = 'Detail Mahasiswa';
$data['mhs'] = $this->model('Mahasiswa_model')->getMahasiswaById($id);
$this->view('templates/header', $data);
$this->view('mahasiswa/detail', $data);
$this->view('templates/footer');
}
public function tambah()
{
if ($this->model('Mahasiswa_model')->tambahMahasiswa($_POST) > 0) {
header ('Location: '. BASEURL .'/mahasiswa');
}
}
}
This my core Database.php这是我的核心 Database.php
<?php
class Database {
private $host = DB_HOST;
private $user = DB_USERNAME;
private $pass = DB_PASSWORD;
private $db_name = DB_NAME;
private $dbh;
private $stmt;
public function __construct()
{
//data source name
$dsn = 'mysql:host='.$this->host.';dbname='.$this->db_name;
$option = [
PDO::ATTR_PERSISTENT => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
];
try {
$this->dbh = new PDO($dsn, $this->user, $this->pass, $option);
} catch(PDOExeption $e) {
die($e->getMessage());
}
}
public function query($query)
{
$this->stmt = $this->dbh->prepare($query);
}
public function bind($param, $value, $type = null)
{
if(is_null($type)) {
switch(true) {
case is_int($value) :
$type = PDO::PARAM_INT;
break;
case is_bool($value) :
$type = PDO::PARAM_BOOL;
break;
case is_null($value) :
$type = PDO::PARAM_NULL;
break;
default :
$type = PDO::PARAM_STR;
}
}
$this->stmt->bindValue($param, $value, $type);
}
public function execute()
{
$this->stmt->execute();
}
public function resultSet()
{
$this->execute();
return $this->stmt->fetchAll(PDO::FETCH_ASSOC);
}
public function single()
{
$this->execute();
return $this->stmt->fetch(PDO::FETCH_ASSOC);
}
public function rowCount()
{
return $this->stmt->rowCount();
}
}
Simple syntax error:简单的语法错误:
$this->db-query($query);
See what you are missing there?看看你在那里缺少什么?
$this->db->query($query);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.