大家好,我遇到了以下问题。我有一个具有完全正常工作的connect函数的数据库类,现在我想在其他类News中使用此myconn变量。无论我采用哪种方式,我都会不断收到错误消息。消息之一是;
在第10行的C:\ Users \ PC \ Documents \ XAMPP \ htdocs \ class.News.php中的非对象上调用成员函数prepare()
我是OOP的新手,任何帮助将不胜感激。
类。数据库
<?php
class Database{
private $db_host = 'localhost';
private $db_user = 'c3337015';
private $db_pass = 'c3337015';
private $db_name = 'iitb';
public $myconn;
public function connect(){
if(!isset($this->myconn)){
$this->myconn = mysqli_connect($this->db_host,$this->db_user,$this->db_pass,$this->db_name);
if($this->myconn){
echo "connected"; // echoing just for testing purposes
return true;
}else{
echo "failed";
return false;
}}else{
echo "already connected";
return false;
}
}
public function disconnect()
{
if(isset($this->myconn))
{
if(mysqli_close($this->myconn))
{
$this->myconn = false;
echo "connection closed";
return true;
}
else
{
echo "failed to close connection";
return false;
}
}else{
echo "no connection prescent";
}
}
}
新闻类
<?php
require_once('class.Database.php');
class News extends Database{
function getNews(){
$me = new Database();
$me->connect();
// HOW DO I USE THE MYCONN VARIABLE AS DEFINED IN CLASS.DATABASE
$stmt = $this->myconn->prepare(" SELECT * FROM news ");
//the rest of the $stmt etc etc....
}
}
最佳答案
如果要在其他类中使用数据库类,则它是另一种依赖关系。您的课程不应扩展数据库课程,因为它不能。
您应该像以前一样仅包含数据库类并使用它。
然后,您应该像这样使用它(基于您提供的代码):
$me = new Database();
$me->connect();
$stmt = $me->myconn->prepare(" SELECT * FROM news ");
但是您可能应该在继续之前阅读一些有关OOP的文章,因为您没有正确使用此范例。