不能让php const值在pdo初始化中工作

时间:2013-06-15 23:09:30

标签: php mysql class pdo const

我在类中定义常量

class config {
    const DB_PDO_Connect = "'mysql:host=localhost;dbname=XdbX','XuserX','XpwX'";
}

在另一个类中,我尝试创建一个新的PDO对象

class user {
    function login() {
        $db = new PDO(config::DB_PDO_Connect);

在该行之后,$db不是一个对象,所以某些东西不起作用,但如果我用它替换它;

class user {
    function login() {
        $db = new PDO('mysql:host=localhost;dbname=XdbX','XuserX','XpwX');

(从配置类中复制并粘贴字符串) 它有效。

我可以回复config::DB_PDO_Connect所以它可以读取它,PDO就是不喜欢它。

1 个答案:

答案 0 :(得分:1)

你实际上做了什么:

$db = new PDO("'mysql:host=localhost;dbname=XdbX','XuserX','XpwX'");

请注意,您实际上只传入了一个参数(格式为意外格式),最后两个参数丢失。

除了架构决策(因为你应该有一个DB类来管理数据库连接,并且最好将配置保存在自己的文件中)为什么不将这两个参数添加到你的配置类?

class config {
    const PDO_DB = 'mysql:host=localhost;dbname=XdbX';
    const PDO_USER = 'XuserX';
    const PDO_PASS = 'XpwX';
}

然后你可以:

$db = new PDO(config::PDO_DB, config::PDO_USER, config::PDO_PASS);