我正在尝试构建一个简单的数据库类。在构造函数中,我正在初始化到MySQL数据库的PDO连接。我将此连接分配给数据库类中的私有变量。然后,我想从同一个类中的公共函数访问该变量以查询数据库。不幸的是,我不断收到如下错误:
Fatal error: Call to a member function prepare() on a non-object.
以下是我正在使用的数据库类的代码:
class Database{
private $conn;
private function __contruct(){
try{
$this->conn = new PDO('mysql:host=myhost;dbname=mydatabase', 'username', 'password', array(PDO::ATTR_PERSISTENT => true));
} catch (PDOException $e) {
print "Error!: " . $e->getMessage()."<br/>";
die();
}
}
public function query($q){
$query = $this->conn->prepare($q);
$query->execute();
$result = $query->fetchAll();
print_r($result);
}
}
然后我有以下代码来使用这个类。
$db = new Database();
$db->query("SELECT * FROM FOO");
非常感谢任何有关错误原因的建议。
答案 0 :(得分:0)
构造函数有两个问题:
__contruct()
应为__construct()
#2不一定是个问题,但你需要一个静态的方法来做任何事情。