DB类不会加载

时间:2015-10-08 13:50:00

标签: php mysqli

我尝试使用simle db类进行连接。出于某种原因,它只打印出来 "发起数据库课程"

test.php的

include 'db.class.php';
echo 'Initiate DB class';
$db = new DB();
echo 'DB class did load';

db.class.php

include 'db.class.php';
echo 'Initiate DB class';
$db = new DB();
echo 'DB class did load';

}

我试图在我的日志文件中搜索错误,但它们是空的。

3 个答案:

答案 0 :(得分:0)

好的,

在您调用db时调用新的DB();这意味着你试图调用数据库类的构造函数。

在你的数据库类中,它看起来像你正在尝试创建一个单例,但是通常会缺少某些东西来为实例分配数据库连接,并且会询问实例是否为空创建新连接或如果它不使用相同的实例。

在一天结束时,您可以将构造函数更改为public。

答案 1 :(得分:0)

试试这个:

Db_class:

class Db_class{
/***********************CONNECT TO DB*********************/
public function db_connect(){
    $user       = '***';
    $db         = '***';
    $password   = '***';
    $host       = '***';

    try {
        $dbh = new PDO("mysql:host=$host;dbname=$db", $user, $password);
    }
    catch(PDOException $err) {
        echo "Error: ".$err->getMessage()."<br/>";
        die();
    }
    return $dbh;
}
/******************PREPARE AND EXECUTE SQL STATEMENTS*****/
public function query($statement){
    $keyword = substr(strtoupper($statement), 0, strpos($statement, " "));
    $dbh = $this->db_connect();     
    if($dbh){
        try{
            $sql = $dbh->prepare($statement);
            $exe = $sql->execute();
        }
        catch(PDOException $err){
            return $err->getMessage();
        }
        switch($keyword){
            case "SELECT": 
                $result = array();
                while($row = $sql->fetch(PDO::FETCH_ASSOC)){
                    $result[] = $row;
                }
                return $result;
                break;
            default: 
                return $exe;
                break;
        }
    }
    else{
        return false;
    }
}

其他PHP:

    $db = new Db_class();

    $sql = "SQL STATEMENT";
    $result = $db->query($sql);

答案 2 :(得分:0)

您的构造函数标记为private,这意味着new DB将引发错误。我看到你有一个私有属性来存储一个实例,你是否缺少返回一个新对象的单例方法?