当我尝试使用我的pdo_object.php文件连接到我的SQL数据库时,我的model.php会返回此错误:
Fatal error: Class 'Db' not found in /path/model.php on line 8
我确保所有权限都正确,并且所有文件的凭据都是正确的。以下是有问题的两个文件。
不确定这里的问题是什么,所以任何帮助都会很棒。
pdo_object.php
<?php
$user = 'someusername';
$pass = 'somepassword';
$db_info='somehost';
try {
$db = new PDO($db_info, $user, $pass);
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
?>
然后是model.php
<?php
include('pdo_object.php');
class Model{
public $db;
public function __construct(){
$this->db = Db::getDb();
}
public function getAllRecords($sql, $parameters = null){
$stm = $this->db->prepare($sql);
$stm->execute($parameters);
return $stm->fetchAll();
}
public function getOneRecord($sql, $parameters = null){
$stm = $this->db->prepare($sql);
$stm->execute($parameters);
return $stm->fetch();
}
}
?>
答案 0 :(得分:0)
class Db { //blah }
在哪里?无处。但是你已经在第一个文件中定义了$db
。
我还建议使用依赖注入,而不是在类中调用静态类方法。基本上,在构造函数中传递$ db:
public function __construct(PDO $db)
{
$this->db = $db;
}
并像这样实例化:
$model = new Model($db);
答案 1 :(得分:0)
pdo_object.php
文件中没有Db类,因此导致index.php
文件在引用非现有类时引发错误。
class Db {
private static $db;
public static function getDb() {
if(!self::$db) {
try {
$dsn = 'somehost; dbname=somedbname';
self::$db = new PDO($dsn, 'username', 'password');
self::$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
self::$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
} catch (PDOException $e) {
die('Connection error: ' . $e->getMessage());
}
}
return self::$db;
}
}