我有一个数据库类,里面有几个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';
我猜它与数据库类的范围及其功能有关,但我对如何解决这个问题有点困惑。非常感谢任何帮助。
答案 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');
}
全局变量通常不受欢迎,因为它们很容易编写凌乱的代码。