静态连接PDO

时间:2019-05-20 10:15:13

标签: php mysql oop

由于我将类更改为静态并尝试学习OOP。我的PDO停止工作。

你们有什么线索吗?由于PDO连接在DBconnect中,应该正常吗?

这是我的代码:

<?php

Class Db{

    private static $dbHost;
    private static $dbUser;
    private static $dbPass;
    private static $dbName;
    private static $dbResult = null;
    public static $dbConnect = null;

    public static function connection(){

        self::$dbHost = '***';
        self::$dbUser = '***';
        self::$dbPass = '***';
        self::$dbName = '***';

        try{
            self::$dbConnect = new PDO('mysql:host='. self::$dbHost . ';dbname=' . self::$dbName,
                self::$dbUser,
                self::$dbPass);

        }catch(PDOException $e){
            echo 'Connection error: ' . $e->getMessage();
        }
    }

    public static function query($sql, $array = []){

        self::$dbResult = self::$dbConnect->prepare($sql);

        self::$dbResult->execute($array);

    }

    public static function getOne(){

        return self::$dbResult->fetch(PDO::FETCH_ASSOC);
    }

    public static function getAll(){

        return self::$dbResult->fetchAll(PDO::FETCH_ASSOC);
    }

    public static function getCount(){

        return self::$dbResult->rowCount();
    }

}
  

未捕获的错误:在null上调用成员函数prepare()

1 个答案:

答案 0 :(得分:1)

根据我们在注释中的扩展讨论,这是由于您从未创建$dbConnect,因为您未执行执行该操作的功能(Db::connection())。

在尝试使用其他静态函数之前,只需在某处运行此代码,代码便会起作用:

Db::connection();
Db::query(...);
...