-2

我有一个目录结构:

app
cofig
 config.php
classes
 db.class.php
index.php 

配置.php:

<?php

define('DB_HOST', 'localhost'); 
define('DB_USER', 'root'); 
define('DB_PASS', ''); 
define('DB_NAME', 'db_name');  

db.class.php:

<?php 
include "config/config.php";

class DB {

private $conn;
private $results;

public function __construct() {

$this->conn = mysql_connect(DB_HOST, DB_USER, DB_PASS);//**This doesn't work**
mysql_select_db(DB_NAME, $this->conn);
}

}
?>

当我尝试在 index.php 中创建 $db 类的实例时,出现错误(无法在类中获取 DEFINED 变量)

4

4 回答 4

3

有这个目录结构:

app
config
 config.php
classes
 db.class.php
index.php 

将迫使您使用:include('../config/config.php');或定义一个绝对PATH的根并执行:include(PATH.'config/config.php');

include "config/config.php";被解释为include('root/classes/config/config.php'),我认为,不存在。

正如 Samy 建议的那样,您无论如何都应该通过构造函数将常量传递给该类,以便您可以将同一个类用于与不同数据库变量的多个连接。

此外,不建议再使用 mysql 或 mysqli 功能。了解 PDO。

于 2012-06-05T17:41:48.957 回答
2

根据您的目录结构,包含路径应​​为“../config/config.php”。由于您使用的是包含,因此无论是否包含文件,它都不会引发致命错误并继续执行代码。根据代码,此处不包含您的文件。尝试这个

  <?php 
include "../config/config.php";

class DB {

    private $conn;
    private $results;

    public function __construct() {

        $this->conn = mysql_connect(DB_HOST, DB_USER, DB_PASS);//**This doesn't work**
        mysql_select_db(DB_NAME, $this->conn);
     }

 }
?>
于 2012-06-05T17:44:09.517 回答
2

假设您的目录结构中的“cofig”是一个错字,请使用:

include("../config/config.php");
于 2012-06-05T17:41:05.060 回答
1

将这些变量作为参数传递给你的类,无论如何它更干净。

class DB {
    public function __construct($host, $dbName, $user, $password) {
        $this->conn = mysql_connect($host, $user, $password);
        mysql_select_db($dbName, $this->conn);
    }
}

new DB(DB_HOST, DB_NAME, DB_USER, DB_PASS);

顺便说一句,mysql_函数正在被弃用

于 2012-06-05T17:31:26.933 回答