0

我在一个类中定义常量

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 只是不喜欢它。

4

1 回答 1

1

你实际上在那里做的是这样的:

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

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

除了架构决策(因为你真的应该有一个 DB 类来管理 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); 
于 2013-06-15T23:45:06.847 回答