大家好,我遇到了以下问题。我有一个具有完全正常工作的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的文章,因为您没有正确使用此范例。

08-17 21:30