由于我将类更改为静态并尝试学习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()
答案 0 :(得分:1)
根据我们在注释中的扩展讨论,这是由于您从未创建$dbConnect
,因为您未执行执行该操作的功能(Db::connection()
)。
在尝试使用其他静态函数之前,只需在某处运行此代码,代码便会起作用:
Db::connection();
Db::query(...);
...