找不到“Db”类

时间:2018-05-07 15:20:32

标签: php html mysql sql database

当我尝试使用我的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();
        }

}
?>

2 个答案:

答案 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;
      }
    }