2012-03-08 74 views
0

我刚刚切换到使用ADODB与MySQL和PHP ...我有麻烦连接到数据库。之前,我可以只有一个全局连接到数据库并运行它的查询,但现在看来我需要每个类中的新连接?ADOdb - PHP + MySQL类的范围和连接

这是应该如何工作或我做错了什么?

在配置文件中所做的连接:

include 'admin/db/adodb.inc.php'; 
$DB = NewADOConnection('mysql'); 
$DB->Connect($server, $db_user, $db_pwd, $db); 

Class用于:

class getuser { 
    public function __construct($user_id) { 
     $userquery = $DB->Execute("SELECT * FROM users WHERE id = '".$user_id."'"); 
     while($user = $userquery->FetchRow()){ 
      $this->uid = $user['id']; 
      $this->username = $user['username']; 
      $this->email = $user['email']; 
     } 
    } 
} 

用来连接所有的变量设置的罚款。如果我将配置文件本身包含在该类中,那么它可以正常工作,因此它必须与$ DB的范围有关?

很显然,我不想为每个类/查询一个新的数据库连接...

而且,我需要担心关闭在任意点的连接?

提前感谢

+0

只是好奇。为什么哦为什么你会想用PHP自由选择使用ADODB? – dubvfan87 2012-03-09 02:40:51

+0

我被绑定到使用mysql + php,这似乎是轻松缓存查询的最佳/最简单的选项。 – Tim 2012-03-09 07:49:10

回答

0

它看起来就像你不告知的PHP $ DB是一个全局变量。请尝试以下操作:

class getuser { 
    public function __construct($user_id) { 
     global $DB; 
     $userquery = $DB->Execute("SELECT * FROM users WHERE id = '".$user_id."'"); 
     while($user = $userquery->FetchRow()){ 
      $this->uid = $user['id']; 
      $this->username = $user['username']; 
      $this->email = $user['email']; 
     } 
    } 
}