PHP define()似乎没有使用include()

时间:2010-08-18 10:02:43

标签: php class include

我一直在尝试使用OO PHP,目前有三个文件。我有一个class_lib.php,目前只有一个databaseServer类,一个index.php文件和一个definitions.php文件。我想将所有敏感数据库信息放入定义文件中。但是,当我这样做时,我在尝试连接数据库时遇到错误:“Unkown server DB_HOST”。我的定义文件是:

<?php
define("DB_HOST","localhost");
define("DB_USER","root");
define("DB_PASS","password");
define("DB_NAME","database");
?>

然后我在索引文件中使用它们,如下所示:

include('definitions.php');
include('class_lib.php');

$testing = new databaseServer();

$testing->connect(DB_HOST,DB_USER,DB_PASS,DB_NAME);

我在databaseServer类中使用的函数是:

    function connect($host,$user,$pw,$db) {
        $this->con = mysql_connect($host,$user,$pw);
        if (!$this->con) {
            die('Could not connect: ' . mysql_error());
            }
        $this->selectDb($db);
        }

    function selectDb($database) {
        $this->db = mysql_select_db($database,$this->con);
        if (!$this->db) {
            echo "Could not Select database: " . mysql_error();
            }
        }

为什么这不起作用的任何想法?我也尝试将定义文件放入class_lib文件中的include中,但它仍然不起作用。

7 个答案:

答案 0 :(得分:5)

这应该可以正常工作,我从来没有看到它不起作用。

  • 100%确定包含的顺序是正确的(需要先加载定义)

  • 在“definitions.php”文件和索引文件中对常量值进行测试输出

  • 100%确定您正在调用正确的文件

答案 1 :(得分:2)

请检查您的服务器是否支持short_open_tag,这个值会被评论。 我刚刚启用它,它开始工作。

答案 2 :(得分:1)

工作

if (stats.isEmpty()){
   System.out.println("no home team name entered");
}
else {
    try{
        for(int i = 0; i < stats.size(); i++){
            System.out.println(stats.get(i)[0] + " " + Integer.valueOf(stats.get(i)[2]) + " : " +
                        Integer.valueOf(stats.get(i)[3]) + " " + stats.get(i)[1]);
        }
    }
    catch (Exception e) {
          //do nothing with any invalid input
    }
}

不工作

<?php
define('KLINGON_SEPARATOR', '');
?>
愚蠢...... IDEA说&#34;多余的结束标签&#34;

答案 3 :(得分:0)

称之为config.php     

if(!$link)
{

die('Failed to connect to server: ' . mysql_error());

}

$db = mysql_select_db(DB_DATABASE);
if(!$db)
{

die("Unable to select database");

}

?>

然后包括(“config.php”);在您的网页上

答案 4 :(得分:0)

我今天有一个类似的问题,它似乎在文件末尾是无效的字符代码。我在堆栈PHP define is not registering constants上找到了它。他的解决方案(删除多余的空格)对我有用。

答案 5 :(得分:-1)

您只需要取出目标文件的define函数并将其传输到源文件(在您的情况下&#34; translation.php&#34;)并准备好工作!

像这样,接收字符串参数的定义函数的错误不会发生,你将包含已经实现的CONSTANTS。

我遇到了这个麻烦,发现自己就是这个解决方案。

答案 6 :(得分:-1)

这里的关键是使用constant()函数从定义的常量中提取值:

echo constant("DB_USERNAME");
相关问题