PHP多次初始化一个包含多个变量的类

时间:2013-03-16 03:03:33

标签: php mysql oop class

我正在尝试运行可以联系多个数据库的数据库类。我把它设置成这样:

$auth = new Auth($db['host'], $db['user'], $db['name']['api'], $db['pass']['api']);
$apiuser = new APIUser($db['host'], $db['user'], $db['name']['users'], $db['pass']['users']);

所有这些$ db数组变量都能正常工作,但它不是这样的类。在每个类的__construct函数中,我都有:

function __construct($dbh, $dbu, $dbn, $dbp) {

        $this->db = new DB($dbh, $dbu, $dbn, $dbp);
    }

然而,当我尝试运行$ this-> db-> query(“我的查询在这里”); (它包含一个简单的返回mysql_query和输入变量),它返回一个布尔值而不是一个资源ID ...这是因为该类正在恢复到用户数据库而不是api数据库,因为$ apiuser来自$ apiauth ...

如果这有任何意义,我真的可以在这方面使用一些帮助!谢谢!

编辑:提供错误的DB类的一部分:

function __construct($host, $user, $name, $pass) {
        $this->error = new Error();
        if(!mysql_connect($host, $user, $pass)) {
            $this->error->db_connect_error($host, $user, $pass);
        }
        if(!mysql_select_db($name)) {
            $this->error->db_select_error($name);
        }
    }
    function query($input) {
        return mysql_query($input);
    }

1 个答案:

答案 0 :(得分:0)

  

然而,当我尝试运行$ this-> db->查询时("我的查询在这里"); (它包含一个简单的返回mysql_query和输入变量),它返回一个布尔值而不是一个资源ID ...这是因为该类正在恢复到用户数据库而不是api数据库,因为$ apiuser来自$ apiauth ...

如果您使用多个数据库,则需要指定您使用的链接:

class DB {
   private $dbRsrc;

   function __construct($host, $user, $name, $pass) {
        $this->error = new Error();
        $this->dbRsrc = mysql_connect($host, $user, $pass);
        if(!$this->dbRsrc) {
            $this->error->db_connect_error($host, $user, $pass);
        }
        if(!mysql_select_db($name)) {
            $this->error->db_select_error($name);
        }
    }
    function query($input) {
        return mysql_query($input, $this->dbRsrc);
    }
}

那就是说@ValeedKahn建议你应该把DB实例注入其他类。此外,你不应该使用mysql_*函数。请改用MysqliPDO。两者都已经有了面向对象的界面。