2012-03-08 27 views
0

私はちょうどMySQLとPHPでADODBを使用するように切り替えました...私はデータベースに接続する際に問題があります。以前は、データベースへのグローバルな接続を1つだけ持っていて、そのクエリを実行できましたが、今は各クラスで新しい接続が必要なようです。ADOdb - PHP + MySQLクラスのスコープと接続

これは動作するか、間違っているのでしょうか?

configファイルで作成された接続:使用

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

クラス:接続するために使用

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']; 
     } 
    } 
} 

変数は、すべての罰金に設定されています。 configファイル自体をクラス内にインクルードすると、それは正常に動作するので、$ DBのスコープと関係しているはずです。

はもちろん、私は、各クラス/クエリのための新しいデータベース接続を持っている必要はありません...

はまた、私は、任意の時点で接続を閉じる心配する必要がありますか?

多くのおかげで、事前に

ティム

+0

ちょうど好奇心。なぜあなたは自由にPHPでADODBを使用したいのですか? – dubvfan87

+0

私はmysql + phpを使用することに縛られています。これは簡単にクエリをキャッシュするための最良の/最も簡単なオプションのようです。 – Tim

答えて

0

あなたは$ DBがグローバル変数であるPHPを通知していないように見えます。以下を試してください:

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']; 
     } 
    } 
}