从另一个函数调用公共函数

时间:2013-09-01 16:59:58

标签: php mysql pdo

我有一个数据库类,里面有几个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';

我猜它与数据库类的范围及其功能有关,但我对如何解决这个问题有点困惑。非常感谢任何帮助。

1 个答案:

答案 0 :(得分: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');
}

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