我有两个类,数据库和用户。在Database类中,我有连接数据库的功能。我希望能够在User类中与数据库建立连接。这就是我目前在用户类中所做的事情:
class User {
function __construct()
{
require_once 'database.class.php';
$DBH = new Database();
$DBH->connect();
}
function register_user()
{
$DBH->prepare('INSERT INTO users VALUES (:username, :password, :forename, :surname)');
$DBH->execute(array(':username' => 'administrator', ':password' => '5f4dcc3b5aa765d61d8327deb882cf99', ':forename' => 'Richie', ':surname' => 'Jenkins'));
}
}
我收到以下错误:
PHP致命错误:致电会员 函数prepare()对非对象
答案 0 :(得分:0)
您应该阅读“范围”。 $DBH
仅在__construct()
中声明为本地。
纠正这一点很容易。只需添加
class User {
private $DBH;
以及$DBH
更改为$this->DBH
的任何地方。也可以帮助阅读$this
和成员变量。
答案 1 :(得分:0)
您需要将$DBH
分配给类属性以允许其他类方法访问。目前$DBH
是__construct()
的本地,不能在其外部使用
class User {
private $dbh;
public function __construct() {
... // your code
$this->dbh = $DBH;
}
}
然后在其他类方法中,您将使用$this->dbh
调用该对象。