我想在我的Model __construct
中建立一个连接,并且能够在子类中使用它。但我收到错误"在非对象上调用成员函数prepare()"。
model.php
include('model/articlemodel.php');
class Model{
protected $conn;
public function __construct(){
try {
$this->conn = new PDO('mysql:host='.DB_HOST.';dbname='.DB_DATABASE, DB_USER, DB_PASS);
$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo 'KLAIDA: ' . $e->getMessage();
}
}
}
articlemodel.php
class ArticleModel extends Model{
public function __construct(){
}
public function selectArticles(){
$stmt = $this->conn->prepare('SELECT * FROM txt_articles ORDER BY id DESC');
$stmt->execute();
$i = 0;
$article_id = array();
$article_title = array();
$article_date = array();
$article_content = array();
while($row = $stmt->fetch()) {
$article_id[i] = $row['id'];
$article_title[i] = $row['title'];
$article_date[i] = $row['date'];
$article_content[i] = $row['content'];
$i++;
}
return array($article_id, $article_title, $article_date, $article_content);
}
}
经过实验后,我发现conn
仅在__constructor
范围内有效。有没有办法在类中建立一个连接,并根据所述连接让它的子类运行查询?
答案 0 :(得分:2)
您正在覆盖子类中的构造,因此永远不会调用父构造函数
所以在子课堂上你需要做一些事情
public function __construct(){
parent::__construct() ;
}