Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在类中访问PDO对象?_Php_Mysql_Pdo - Fatal编程技术网

Php 如何在类中访问PDO对象?

Php 如何在类中访问PDO对象?,php,mysql,pdo,Php,Mysql,Pdo,我正在尝试构建一个简单的数据库类。在构造函数中,我正在初始化到MySQL数据库的PDO连接。我正在将此连接分配给数据库类中的一个私有变量。然后我想从同一个类中的公共函数访问该变量以查询数据库。不幸的是,我一直收到如下错误: 致命错误:对非对象调用成员函数prepare 下面是我正在使用的数据库类的代码: class Database{ private $conn; private function __contruct(){ try{ $

我正在尝试构建一个简单的数据库类。在构造函数中,我正在初始化到MySQL数据库的PDO连接。我正在将此连接分配给数据库类中的一个私有变量。然后我想从同一个类中的公共函数访问该变量以查询数据库。不幸的是,我一直收到如下错误:

致命错误:对非对象调用成员函数prepare

下面是我正在使用的数据库类的代码:

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);
    }
}

如果您对错误原因有任何建议,我们将不胜感激。

您的构造函数存在两个问题:

它拼错了:uu construct应该是u construct 它是私有的,因此您无法从类外部实例化它。
2不一定是个问题,但您需要一个静态方法来处理它。

您在函数构造中有一个输入错误。PHP不知道如何构造谢谢你指出我的错误。我改变了这两件事,现在它可以工作了。
$db = new Database();
$db->query("SELECT * FROM FOO");