PDO连接未按预期工作

时间:2012-06-21 18:33:26

标签: php pdo

我认为这主要是因为我是PHP OOP的新手,但我有一个简单的问题,我似乎找不到答案。由于我对几种方法使用相同的连接信息,我厌倦了取出信息并将它们作为私有和静态放入属性变量中。但是,在尝试建立PDO连接时,这不起作用:

class MyClass {
    private static $DSN = "mysql:host=localhost;dbname=testdb";
    private static $USR = "user";
    private static $PWD = "password";

    public static function connection() {
        $pdo = new PDO($DSN, $USR, $PWD);
        //more code
    }
}

然而,当我手动输入信息时,它可以正常工作:

class MyClass {
    public static function connection() {
        $pdo = new PDO("mysql:host=localhost;dbname=testdb", "user", "password");
        //more code
    }
}

那么为什么不使用一组属性呢?我花了几个小时试图让它工作,它只是没有,只是发现这是问题。手动连接我很好,但我想知道为什么第一个解决方案不起作用。

2 个答案:

答案 0 :(得分:3)

您需要self关键字(以及范围解析运算符::)才能访问这些私有静态属性。

$pdo = new PDO( self::$DSN, self::$USR, self::$PWD);

否则你没有引用正确的变量。

有关静态关键字的详情,请参阅the manual

答案 1 :(得分:1)

您正在错误地调用您的值。

$pdo = new PDO( self::$DSN, self::$USR, self::$PWD);

或者

$pdo = new PDO( MyClass::$DSN, MyClass::$USR, MyClass::$PWD);