0

我有一个数据库类,里面有几个 PDO 函数(db.inc.php)。我正在尝试从另一个函数调用此函数:

// Query method
public function query($query) {
    $this->stmt = $this->dbh->prepare($query);
}

在我的全局 PHP 文件中,我使用以下方法实例化了数据库:

// Instantiate database
$database = new database();

但是,当尝试从不同 PHP 文件 (user.inc.php) 中的另一个函数调用此函数时:

function confirmAccount($key,$id) {
// Check key and id against entry in database
$database->query('SELECT * FROM users WHERE id = :id');
}

我收到以下错误:

致命错误:在第 10 行的 /home/studevne/public_html/includes/user.inc.php 中的非对象上调用成员函数 query()

我所有的 PHP 文件都包含在全局 PHP 文件中,如下所示:

include_once 'includes/db.inc.php';
include_once 'includes/echo.inc.php';
include_once 'includes/tools.inc.php';
include_once 'includes/user.inc.php';

我猜它与数据库类的范围及其功能有关,但是我对如何解决这个问题有点困惑。任何帮助是极大的赞赏。

4

1 回答 1

0

您需要传入$database该函数,否则它超出范围。您可以将其作为参数传入:

function confirmAccount($key,$id,$database) {
    // Check key and id against entry in database
    $database->query('SELECT * FROM users WHERE id = :id');
}

或作为全局:

function confirmAccount($key,$id) {
    global $database;
    // Check key and id against entry in database
    $database->query('SELECT * FROM users WHERE id = :id');
}

全局变量通常不受欢迎,因为它们很容易编写杂乱的代码。

于 2013-09-01T17:04:10.463 回答