Php 致命错误:调用未定义的方法connectDB::prepare()
我尝试使用一个类connectDB来连接一个MySQL数据库,以实现一个简单的CRUD。然后,当我尝试执行RecipesModel类的方法delRecipe时,系统会显示一个错误 致命错误:调用未定义的方法connectDB::prepare() 调用方法prepare()是否正确?为什么不被承认 下面是connectDB的代码(文件connectDB.php) 以及删除该行的类Php 致命错误:调用未定义的方法connectDB::prepare(),php,mysql,mysqli,Php,Mysql,Mysqli,我尝试使用一个类connectDB来连接一个MySQL数据库,以实现一个简单的CRUD。然后,当我尝试执行RecipesModel类的方法delRecipe时,系统会显示一个错误 致命错误:调用未定义的方法connectDB::prepare() 调用方法prepare()是否正确?为什么不被承认 下面是connectDB的代码(文件connectDB.php) 以及删除该行的类 <?php require_once('connectDB.php'); class RecipesMode
<?php
require_once('connectDB.php');
class RecipesModel {
private $db;
public function __construct() {
$this->db = new connectDB();
}
public function delRecipe($id) {
if (is_numeric($id)) {
$sql = 'DELETE FROM t_platos WHERE ID_pl= ?';
$this->db->prepare($sql);
return $this->db->execute(array($id));
}
}
}
$recipe = new RecipesModel();
$res = $recipe->delRecipe(1);
?>
您的
connectDB
类没有名为prepare()
的方法
您可能试图调用$this->db->sql->prepare()
,因为在connectDB
中,您将实际的数据库连接存储到$this->sql
中。但是,由于$sql
属性是private
,因此不能这样做
您需要将
$sql
设置为公共属性
,或者在connectDB
类中创建一个方法作为代理。您的误解是:
return $this->sql;
您不能
在构造函数中返回您选择的内容。构造函数返回的值始终是该类的对象实例。DBConnect类中没有prepare
方法!!!!MYSQLI扩展有一个非常好的OO访问方法。你只会使事情复杂化,试图用你自己的方式重新包装。这里有一条免费的建议:停止为连接抽象制作包装。它们毫无意义。另外,请阅读有关依赖项注入的内容。哦不要叫他们“模特”。你有的只是即兴表演。
return $this->sql;