我正在尝试运行可以联系多个数据库的数据库类。我把它设置成这样:
$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);
}
答案 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_*
函数。请改用Mysqli
或PDO
。两者都已经有了面向对象的界面。