【发布时间】:2013-03-04 21:59:52
【问题描述】:
我正在尝试运行一个可以联系多个数据库的数据库类。我是这样设置的:
$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("my query here"); (它包含一个带有输入变量的简单返回 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);
}
【问题讨论】:
-
如果也能看到 DB 类就好了
-
刚刚发布,谢谢!
-
我会说直接返回 $resource 是一种不好的做法,返回实际结果可能会更好。无论如何,如果它返回 FALSE,这意味着:1. 您的查询有错误 2. 数据库连接有错误 3. 给定的用户没有访问表的权限。
-
您应该将您的
DB实例作为参数传递。依赖注入、DRY 等。也没有重复的实例化。