Php 致命错误:当不在对象上下文中时使用$this,即使在对象上下文中也是如此

Php 致命错误:当不在对象上下文中时使用$this,即使在对象上下文中也是如此,php,class,mysqli,Php,Class,Mysqli,我在调用数据库类并运行查询函数时遇到此错误 这是我的班级: class dbConnect { public $mysqli = null; public function __construct() { $this->mysqli = new mysqli( "localhost", "root", "pass", "database" ); if ($this->mysqli->connect_errno) { echo "Er

我在调用数据库类并运行查询函数时遇到此错误

这是我的班级:

class dbConnect {

public $mysqli = null;

public function __construct() {
    $this->mysqli = new mysqli( "localhost", "root", "pass", "database" );
    if ($this->mysqli->connect_errno) 
    {
        echo "Error MySQLi: ("&nbsp. $this->mysqli->connect_errno 
        . ") " . $this->mysqli->connect_error;
        exit();
    }
    $this->mysqli->set_charset("utf8"); 
}

public function __destruct() {
    $this->closeDB();
}

public function runQuery($qry) {
    $result = $this->mysqli->query($qry);
    return $result;
}
这是我的页面:

$db = new dbConnect();
$insert = "INSERT INTO `users` (`username`,`password`,`email`,`ip`,`date`) VALUES ('$username','$pw','$email','$ip','$time')";

$db->runQuery( $insert ) or die("Error MySQLi: ("&nbsp. $db->mysqli->connect_errno . ") " . $db->mysqli->connect_error);
编辑:


我现在在骰子的最后一行中得到错误Dbr`0,您不在对象中。

更改此项:

$db->runQuery( $insert ) or die("Error MySQLi: ("&nbsp. $this->mysqli->connect_errno . ") " . $this->mysqli->connect_error);
为此:

$db->runQuery( $insert ) or die("Error MySQLi: ("&nbsp. $db->mysqli->connect_errno . ") " . $db->mysqli->connect_error);

但是,我建议您创建一个方法来获取错误,而不是直接访问数据库对象(
$db->mysqli
)。

或die
语句中,您忘记了一个
$this
,请用
$db

替换它。我在类中没有看到任何在u destruct中调用的closeDB函数()函数如下:
$this->closeDB();

在您的查询中将
$this->mysqli->connect\u errno
替换为
$db->mysqli->connect\u errno

是的,这是我通常会做的。即使将
$this
更改为
$db
后,我也会得到错误Dbr`0@Sygon这完全是另一个问题……我们需要更多的信息来弄清楚到底发生了什么事。那就是nction更进一步,它是
公共函数CloseDB(){$this->mysqli->close();}