尝试创建用于连接到数据库的字符串时出错(mysql:host ='。DB_HOST。'; dbname ='。DB_DATABASE;)

时间:2012-02-19 13:34:48

标签: php mysql

我在网上看到了几个使用类似方法的例子,但我不明白为什么它在这里失败。

我正在尝试将2个参数用于DB_HOST和DB_DATABASE,我想将其附加到字符串并将其分配给以下变量:

外部PHP文件:

define( 'DB_HOST',         'localhost');
define( 'DB_DATABASE',     'mydb');

class Database {
private static $dsn = 'mysql:host=' .  DB_HOST . ';dbname=' . DB_DATABASE;
...
}

我尝试过单引号,双引号以及我能想到的所有内容但是我收到以下错误:

Parse error: syntax error, unexpected '.', expecting ',' or ';'

我已经尝试将 define('DB_HOST','localhost'); 放在类中(althogh这不是理想的,仅用于测试目的)但是然后我'得到:

  

解析错误:语法错误,意外T_STRING,期待T_FUNCTION

知道可能出现什么问题吗?

PS:我尝试使用普通的PHP变量(如 $ db_host ),但没有任何成功:S

1 个答案:

答案 0 :(得分:1)

您无法像这样初始化properties,只能将它们初始化为常量值。即使这样也会产生同样的错误:

class Sample {
   private static $dsn = 'a' . 'b';
}

您需要在其他地方初始化它。例如:

define( 'DB_HOST',         'localhost');
define( 'DB_DATABASE',     'mydb');

class Database {
private static $dsn;
    public static function setup() {
        self::$dsn = 'mysql:host=' .  DB_HOST . ';dbname=' . DB_DATABASE;
    }
}

Database::setup();